Введение
Команда go run
для автоматической компиляции исходного кода и запуска полученного исполняемого файла полезна для тестирования кода в командной строке, для развертывания или развертывания приложения необходимо создать код в совместно используемом двоичном исполняемом файле или в одном файле, содержащем машинный байт-код, который может запускать приложение. Для этого вы можете использовать набор инструментов Go для компиляции и установки программа.
В Go процесс перевода исходного кода в двоичный исполняемый файл называется сборкой. После того, как этот исполняемый файл будет создан, он будет содержать не только ваше приложение, но и весь вспомогательный код, необходимый для запуска двоичного файла на целевой платформе. Это означает, что бинарный файл Go не нуждается в системных зависимостях, таких как Go, для запуска в новой системе, в отличие от других языков, таких как Ruby, Python или Node.js. Поместив эти исполняемые файлы в путь к исполняемому файлу в вашей системе, вы сможете запускать программу из любого места в системе.
В этом руководстве мы будем использовать цепочку инструментов Go для запуска, создания и установки Hello, World!
, что позволяет эффективно использовать и развертывать будущие приложения.
Предпосылки
Чтобы следовать примеру из этой статьи, в вашей системе должен быть установлен Go:
- Как установить Go на CentOS 8.
- Как установить Go на Linux Debian 10.
- Как установить Go на Ubuntu 18.04.
Установите и запустите Go Binary
Во-первых, давайте создадим приложение для использования в качестве примера для набора инструментов Go.Для этого мы будем использовать классический Hello, World!
.
Создайте каталог с именем greeter
в вашем каталоге src
:
mkdir greeter
Затем перейдите в только что созданный каталог с помощью команды cd и создайте файл main.go
в текстовом редакторе по вашему выбору:
cd greeter
nano main.go
После открытия файла добавьте следующее содержимое:
При запуске эта программа напечатает фразу Hello, World!
на консоли, программа правильно закроется.
Сохраните и закройте файл.
Чтобы протестировать программу, используйте команду go run
:
go run main.go
Вы получите следующий вывод:
Hello, World!
Как упоминалось выше, команда go run
внедряла исходный файл в исполняемый двоичный файл, а затем запускала скомпилированную программу. Тем не менее, это руководство направлено на создание двоичного файла таким образом, чтобы вы могли делиться им и распространять его по своему усмотрению. Для этого на следующем шаге вы будете использовать команду go build
.
Строительство дорожек с помощью go build
С помощью go build
вы можете сгенерировать исполняемый двоичный файл для нашего примера приложения Go, что позволит вам развертывать и развертывать программу в любом месте.
Попробуйте это с main.go
В вашем каталоге greeter
выполните следующую команду:
go build
Если вы не укажете аргумент этой команде, go build
автоматически создаст программу в текущем main.go
Команда включит все ваши файлы *.go
в каталоге. Он также соберет весь вспомогательный код, необходимый для запуска бинарного файла на любом компьютере с такой же системной архитектурой, независимо от того, есть ли в этой системе исходные файлы .go
или даже установка Go.
В этом случае приложение greeter
было создано в исполняемом файле, который был добавлен в текущий каталог. Проверьте это, выполнив команду ls
:
ls
Если вы используете macOS или Linux, вы найдете новый исполняемый файл, названный в честь каталога, в котором вы создали свою программу:
greeter main.go
Примечание.greeter.exe
По умолчанию go build
создаст исполняемый файл для текущей платформы и архитектуры. Например, если он построен на системе linux/386
, исполняемый файл будет совместим с любой другой системой linux/386
, даже если Go не установлен.
Теперь, когда вы создали свой исполняемый файл, запустите его, чтобы убедиться, что двоичный файл был создан правильно. В macOS или Linux выполните следующую команду:
./greeter
В Windows запустите:
greeter.exe
Вывод двоичного файла будет соответствовать выводу, когда вы запустили программу с помощью go run
:
Hello, World!
Теперь вы создали один исполняемый двоичный файл, который содержит не только вашу программу, но и весь системный код, необходимый для запуска этого двоичного файла. Теперь вы можете развернуть эту программу на новых системах или развернуть ее на сервере, зная, что файл всегда будет запускать одну и ту же программу.
В следующем разделе этого руководства объясняется, как называется двоичный файл и как его можно изменить, чтобы вы могли лучше контролировать процесс компиляции вашей программы.
Изменить бинарное имя
Теперь, когда вы знаете, как сгенерировать исполняемый файл, следующим шагом будет определение того, как Go выбирает имя для двоичного файла, и настройка этого имени для вашего проекта.
При запуске go build
по умолчанию используется Go, чтобы автоматически выбрать имя сгенерированного исполняемого файла. Это делается двумя способами: если вы используете Go Modules, Go будет использовать последнюю часть имени вашего модуля; в противном случае Go будет использовать текущее имя каталога. Это метод, использованный в последнем разделе, когда каталог greeter
был создан, изменен в нем, а затем запущен go build
.
Давайте подробнее рассмотрим метод формы. Если бы в проекте был файл go.mod
с объявлением module
как показано ниже:
Таким образом, имя по умолчанию для сгенерированного исполняемого файла будет shark
.
В более сложных программах, требующих определенных соглашений об именах, эти значения по умолчанию не всегда будут лучшим выбором для именования вашего двоичного файла. В таких случаях было бы лучше настроить вывод с флагом -o
.
Чтобы попробовать, измените имя исполняемого файла, созданного в предыдущем разделе, на hello
и поместите его в подпапку с именем bin
. Нет необходимости создавать эту папку, Go сделает это сам в процессе сборки.
Запустите следующую команду go build
с флагом -o
:
go build -o bin/hello
Флаг -o
заставляет Go сопоставлять вывод команды с любыми аргументами, которые вы выберете. В этом случае результатом является новый исполняемый файл с именем hello
в подпапке с именем bin
.
Чтобы протестировать новый исполняемый файл, перейдите в новый каталог и запустите двоичный файл:
cd bin
./hello
Вы получите следующий вывод:
Hello, World!
Теперь вы можете настроить имя исполняемого файла в соответствии с потребностями вашего проекта. Но с go build
вы по-прежнему ограничены запуском бинарного файла из текущего каталога. Чтобы использовать исполняемые файлы из любого места в системе, вы можете установить их с помощью go install
.
Установите программы Go с помощью go install
До сих пор в этой статье мы обсуждали, как создавать исполняемые двоичные файлы из наших исходных файлов .go
. Эти исполняемые файлы полезны для распространения и тестирования, но их пока нельзя запускать за пределами их исходных каталогов. Это может быть проблемой, если вы хотите активно использовать программу, например, если вы разработали инструмент командной строки, чтобы помочь рабочему процессу в вашей системе. Чтобы упростить использование программ, вы можете установить их в своей системе и получать к ним доступ из любого места.
Чтобы понять, что это значит, мы воспользуемся командой go install
для установки примера приложения.
Команда go install
ведет себя почти так же, как и go build
, но вместо того, чтобы оставить исполняемый файл в текущем каталоге или в каталоге, указанном флагом -o
, она помещает исполняемый файл в $GOPATH/bin
.
Чтобы узнать, где находится ваш каталог $GOPATH
, выполните следующую команду:
go env GOPATH
Полученный вывод будет отличаться, но по умолчанию используется каталог go
в каталоге $HOME
:
$HOME/go
Поскольку go install
поместит сгенерированные исполняемые файлы в подкаталог $GOPATH
именем bin
, этот каталог необходимо добавить в переменную окружения $PATH
.
Установив каталог $GOPATH/bin
, вернитесь в каталог greeter
:
cd..
Теперь запустите команду установки:
go install
Это создаст ваш двоичный файл и вставит его $GOPATH/bin
. Чтобы убедиться в этом, сделайте следующее:
ls $GOPATH/bin
Это перечислит содержимое $GOPATH/bin
:
greeter
Примечание.go install
не-o
Установив двоичный файл, проверьте, будет ли программа запускаться из-за пределов исходного каталога. Вернитесь в свой домашний каталог:
cd $HOME
Для запуска программы используйте следующее:
greeter
Это приведет к следующему:
Hello, World!
Теперь вы можете взять написанные вами программы и установить их в своей системе, что позволит вам использовать их где угодно и когда они вам понадобятся.
Вывод
В этом руководстве вы узнали, как набор инструментов Go упрощает создание исполняемых двоичных файлов из исходного кода. Эти двоичные файлы можно распространять для запуска в других системах, даже в тех, в которых нет инструментов и сред Go.Кроме того, go install
автоматически создает и устанавливает наши программы в виде исполняемых файлов в системах $PATH
. С go build
and go install
теперь у вас есть возможность поделиться своим приложением и использовать его по своему усмотрению.