Александр Гольцман
Команда 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 -v
x
— показывает внутренние команды, выполняемые при сборке. Помогает разбираться с ошибками.race
— включает детектор гонок данных. Особенно важно при работе с горутинами:
go build -race
trimpath
— удаляет пути к исходным файлам из бинарника, уменьшая его размер и скрывая детали системы:
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 с нуля
Антон Ларичев