Найти в Дзене

Golang с нуля: кросс-компиляция и сборка

(Статья 9 из цикла "Golang с нуля") Одно из главных преимуществ Go — это его способность легко создавать исполняемые файлы для разных операционных систем и архитектур. Это делает Go идеальным языком для разработки кроссплатформенных утилит и сервисов. В этой статье мы разберёмся, как работает кросс-компиляция. Компилятор Go не зависит от операционной системы, на которой он запущен. Вы можете скомпилировать программу для Windows, работая на macOS или Linux, и наоборот. Для этого используются две переменные окружения: GOOS (операционная система) и GOARCH (архитектура). Пример:
Представьте, что вы работаете на компьютере с Windows и хотите создать исполняемый файл для Linux. Для этого в командной строке нужно указать эти переменные перед командой go build:
set GOOS=linux set GOARCH=amd64 go build -o myapp-linux
(Обратите внимание: на Linux и macOS используется команда export GOOS=linux) В результате в вашей папке появится файл myapp-linux, который можно запускать на 64-битных системах с
Оглавление

(Статья 9 из цикла "Golang с нуля")

Одно из главных преимуществ Go — это его способность легко создавать исполняемые файлы для разных операционных систем и архитектур. Это делает Go идеальным языком для разработки кроссплатформенных утилит и сервисов. В этой статье мы разберёмся, как работает кросс-компиляция.

🔹 Основы кросс-компиляции

Компилятор Go не зависит от операционной системы, на которой он запущен. Вы можете скомпилировать программу для Windows, работая на macOS или Linux, и наоборот. Для этого используются две переменные окружения: GOOS (операционная система) и GOARCH (архитектура).

  • GOOS (Go Operating System): linux, windows, darwin (macOS), freebsd и другие.
  • GOARCH (Go Architecture): amd64 (64-битные системы), arm, arm64 (для Raspberry Pi, Apple Silicon и т.д.).

Пример:
Представьте, что вы работаете на компьютере с Windows и хотите создать исполняемый файл для Linux. Для этого в командной строке нужно указать эти переменные перед командой go build:

set GOOS=linux

set GOARCH=amd64

go build -o myapp-linux

(Обратите внимание: на Linux и macOS используется команда export GOOS=linux)

В результате в вашей папке появится файл myapp-linux, который можно запускать на 64-битных системах с Linux.

🔹 Инструменты для автоматизации

Хотя ручная установка переменных окружения удобна для простых случаев, для крупных проектов, где нужно собрать билды для десятка платформ, лучше использовать специальные инструменты.

Gox: инструмент для кросс-компиляции
Gox — это популярный инструмент, который автоматизирует процесс кросс-компиляции. Он позволяет одной командой собрать ваше приложение для множества платформ.

  • Установка Gox:

go install github.com/mitchellh/gox@latest

  • Использование Gox:

gox -os="windows linux darwin"

Эта команда скомпилирует ваше приложение сразу для Windows, Linux и macOS, создав соответствующие исполняемые файлы.

💡 Вывод

Кросс-компиляция в Go — это мощная и простая функция, которая позволяет создавать универсальные приложения без необходимости иметь отдельный компьютер для каждой операционной системы. Вы можете скомпилировать ваше приложение для любой целевой платформы, что делает Go невероятно удобным для разработки DevOps-инструментов, утилит и другого ПО.

Что дальше?

На этом наш вводный цикл статей подходит к концу. За эти девять статей мы изучили Go от самых основ до продвинутых функций. Надеюсь, этот цикл вдохновил вас на дальнейшее изучение языка.

Если у вас есть идеи для следующего цикла или конкретные вопросы по Go, пишите в комментариях!