Александр Гольцман
Команда 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
Здесь ./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.