Александр Гольцман
Команда go build в Golang
go build — одна из ключевых команд в экосистеме Go. Она отвечает за компиляцию исходного кода в исполняемый файл, управляет зависимостями и позволяет подготовить проект к запуску. В этой статье я разберу, как работает go build, какие флаги могут быть полезны, как настроить кросс-компиляцию и что делать, если сборка завершается с ошибкой.
Как работает go build
Смотрите, go build компилирует Go-код и создаёт исполняемый файл. Например, если в текущей директории есть main.go, можно запустить:
go buildПосле этого появится исполняемый файл с тем же именем (main на Linux/macOS или main.exe на Windows).
Если проект состоит из нескольких пакетов, go build можно запустить для конкретного пути:
go build ./cmd/appРассмотренные в статье флаги и опции команды go build позволяют тонко настроить процесс сборки. Однако, для понимания, как именно эти флаги влияют на конечный бинарный файл, необходимо хорошо понимать, как Golang работает под капотом, как устроена память и как происходит компиляция. Если вы хотите детальнее погрузиться в эти вопросы, а также узнать больше о возможностях языка — приходите на наш большой курс Основы Golang. На курсе 193 уроков и 16 упражнений, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Здесь ./cmd/app — это путь к пакету с main.go. Если собрать библиотечный пакет, go build просто проверит код на ошибки, но бинарник не создаст.
Полезные флаги
Команда go build поддерживает множество параметров, но я выделю те, которые пригодятся в работе:
o <файл>— задаёт имя выходного бинарника. Например:
go build -o myapp
создаст исполняемый файлmyapp.v— выводит информацию о процессе сборки. Полезно, если хотите видеть, какие пакеты компилируются:
go build -vx— показывает внутренние команды, выполняемые при сборке. Помогает разбираться с ошибками.race— включает детектор гонок данных. Особенно важно при работе с горутинами:
go build -racetrimpath— удаляет пути к исходным файлам из бинарника, уменьшая его размер и скрывая детали системы:
go build -trimpath
Кросс-компиляция с go build
Go позволяет собирать приложения для разных операционных систем и архитектур. Для этого перед go build можно указать переменные окружения GOOS и GOARCH. Например, сборка под Windows с Linux/macOS:
GOOS=windows GOARCH=amd64 go build -o app.exeДля сборки под Linux с Windows можно использовать:
SET GOOS=linux
SET GOARCH=amd64
go build -o appПолный список поддерживаемых платформ можно получить командой:
go tool dist listОшибки при сборке и их решение
Смотрите, go build может завершаться с ошибками, если:
- Не хватает зависимостей. Проверьте их с помощью
go mod tidyиgo mod vendor. - Несовместимые версии пакетов. Попробуйте
go list -m allи обновите зависимости сgo get -u. - Конфликты в коде. Иногда помогает
go clean -cacheдля очистки кеша сборки.
Заключение
go build — это основной инструмент сборки проектов в Go. Он компилирует код, проверяет зависимости, позволяет выполнять кросс-компиляцию и оптимизировать бинарники. Я показал основные флаги и примеры использования, но если ваш проект становится сложнее, имеет смысл изучить также go install и go run, которые дополняют возможности go build.
Попробуйте применить эти команды в своих проектах — так вы лучше поймёте, как управлять процессом сборки в Go.
В заключение стоит отметить, что go build — мощный инструмент, но он является лишь частью экосистемы Golang. Для того, чтобы уверенно использовать его, необходимо освоить базовые концепции языка, такие как переменные, типы данных, функции и пакеты. Эти основы закладываются в первых модулях курса Основы Golang. Первые три модуля доступны бесплатно — начните погружаться в мир Golang прямо сейчас.
Постройте личный план изучения Golang до уровня Middle — бесплатно!
Golang — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Бесплатные лекции
Все гайды по Golang
Лучшие курсы по теме

Основы Golang
Антон Ларичев
Nest.js с нуля
Антон Ларичев