Вступление
До сих пор в нашем How To Code in Go вы использовали команду https://www.digitalocean.com / community / tutorials / how-to-write-your-first-program-in-go # step-2-% E2% 80% 94-running-a-go-program [+ go run +
] для автоматической компиляции вашего Исходный код и запустить полученный исполняемый файл. Хотя эта команда полезна для тестирования вашего кода в командной строке, для распространения или развертывания приложения требуется, чтобы вы встроили код в разделяемый исполняемый файл binary_binary или в один файл, содержащий машинный байт-код, который может запустить ваше приложение. Для этого вы можете использовать набор инструментов Go для _build и install вашей программы.
В Go процесс преобразования исходного кода в двоичный исполняемый файл называется building. Как только этот исполняемый файл собран, он будет содержать не только ваше приложение, но и весь код поддержки, необходимый для выполнения двоичного файла на целевой платформе. Это означает, что двоичный файл Go не требует системных зависимостей, таких как инструменты Go, для запуска на новой системе, в отличие от других языков, таких как https://www.digitalocean.com/community/tutorial_series/how-to-code-in-ruby [ Ruby], Python или https://www.digitalocean.com/community/tutorials/how-to -Write-беги-ваш-первых, программа-в-узел-JS [Node.js]. Помещение этих исполняемых файлов в путь к исполняемому файлу в вашей собственной системе позволит вам запускать программу из любой точки вашей системы. Это называется установка программы в вашу систему.
В этом руководстве вы будете использовать набор инструментов Go для запуска, сборки и установки примера программы + Hello, World! +
, Позволяющей эффективно использовать, распространять и развертывать будущие приложения.
Предпосылки
Чтобы следовать примеру в этой статье, вам понадобится:
-
Рабочее пространство Go, настроенное следующим образом Настройка локальной среды программирования.
Настройка и запуск двоичного файла Go
Сначала создайте приложение для использования в качестве примера для демонстрации цепочки инструментов Go. Для этого вы будете использовать классическую программу «Здравствуй, мир!» Из How To Напиши свою первую программу в Go учебник.
Создайте каталог с именем + greeter +
в вашем каталоге + src +
:
mkdir greeter
Затем перейдите во вновь созданный каталог и создайте файл + main.go +
в любом текстовом редакторе:
cd greeter
nano main.go
После открытия файла добавьте следующее содержимое:
SRC / привратник / main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
При запуске эта программа выведет фразу + Hello, World! +
На консоль, а затем программа успешно завершит работу.
Сохраните и выйдите из файла.
Чтобы протестировать программу, используйте команду + go run +
, как вы делали в предыдущих уроках:
go run main.go
Вы получите следующий вывод:
OutputHello, World!
Как упоминалось ранее, команда + go run
собирает ваш исходный файл в исполняемый двоичный файл, а затем запускает скомпилированную программу. Тем не менее, это руководство предназначено для создания бинарного файла таким образом, чтобы вы могли делиться им и распространять его по своему желанию. Для этого вы будете использовать команду + go build
на следующем шаге.
Сборка Go Binaries С + go build
Используя + go build +
, вы можете сгенерировать исполняемый двоичный файл для нашего примера приложения Go, что позволит вам распространять и развертывать программу там, где вы хотите.
Попробуйте это с + main.go +
. В вашем каталоге + greeter +
выполните следующую команду:
go build
Если вы не предоставите аргумент этой команде, + go build +
автоматически скомпилирует программу + main.go +
в вашем текущем каталоге. Команда будет включать все ваши файлы + *. Go +
в каталоге. Он также создаст весь поддерживающий код, необходимый для выполнения двоичного файла на любом компьютере с такой же архитектурой системы, независимо от того, имеет ли эта система исходные файлы + .go +
или даже установку Go.
В этом случае вы встроили ваше приложение + greeter +
в исполняемый файл, который был добавлен в ваш текущий каталог. Проверьте это, запустив команду + ls +
:
ls
Если вы работаете в macOS или Linux, вы найдете новый исполняемый файл, который был назван в честь каталога, в котором вы создали свою программу:
Output main.go
По умолчанию + go build +
создаст исполняемый файл для текущего https://www.digitalocean.com/community/tutorials/building-go-applications-for-different-operating-systems-and-architectures#possible-platforms- for-goos-and-goarch [платформа и архитектура]. Например, если он построен на системе + linux / 386 +
, исполняемый файл будет совместим с любой другой системой + linux / 386 +
, даже если Go не установлен. Go поддерживает сборку для других платформ и архитектур, о которой вы можете прочитать больше в нашем Building Go Applications для разных операционных систем и архитектур.
Теперь, когда вы создали свой исполняемый файл, запустите его, чтобы убедиться, что двоичный файл собран правильно. В macOS или Linux выполните следующую команду:
./greeter
В Windows запустите:
greeter.exe
Вывод двоичного файла будет совпадать с выводом, когда вы запустили программу с + go run +
:
OutputHello, World!
Теперь вы создали один исполняемый двоичный файл, который содержит не только вашу программу, но и весь системный код, необходимый для запуска этого двоичного файла. Теперь вы можете распространить эту программу на новые системы или развернуть ее на сервере, зная, что файл всегда будет запускать одну и ту же программу.
В следующем разделе этого руководства будет объяснено, как называется двоичный файл и как вы можете его изменить, чтобы лучше контролировать процесс сборки вашей программы.
Изменение двоичного имени
Теперь, когда вы знаете, как сгенерировать исполняемый файл, следующий шаг - определить, как Go выбирает имя для двоичного файла, и настроить это имя для вашего проекта.
Когда вы запускаете + go build
, по умолчанию Go автоматически выбирает имя сгенерированного исполняемого файла. Это делается одним из двух способов: если вы используете Go Modules, то Go будет использовать последнюю часть имени вашего модуля; в противном случае Go будет использовать имя текущего каталога. Этот метод использовался в последнем разделе, когда вы создали каталог + greeter +
, изменили его и затем запустили + go build +
.
Давайте подробнее рассмотрим метод модуля. Если в вашем проекте был файл + go.mod
с объявлением` + module`, например:
go.mod
module
Тогда имя по умолчанию для сгенерированного исполняемого файла будет ++
.
В более сложных программах, требующих определенных соглашений об именах, эти значения по умолчанию не всегда будут лучшим выбором для именования вашего двоичного файла. В этих случаях было бы лучше настроить вывод с помощью флага + -o +
.
Чтобы проверить это, измените имя исполняемого файла, который вы сделали в последнем разделе, на + hello +
и поместите его в подпапку с именем + bin +
. Вам не нужно создавать эту папку; Go сделает это самостоятельно в процессе сборки.
Запустите следующую команду + go build
с флагом` + -o + `:
go build -o bin/hello
Флаг + -o +
заставляет Go сопоставлять вывод команды с любым выбранным аргументом. В этом случае результатом является новый исполняемый файл с именем + hello +
в подпапке с именем + bin +
.
Чтобы проверить новый исполняемый файл, перейдите в новый каталог и запустите двоичный файл:
cd bin
./hello
Вы получите следующий вывод:
OutputHello, World!
Теперь вы можете настроить имя вашего исполняемого файла в соответствии с потребностями вашего проекта, завершив наш обзор о том, как создавать двоичные файлы в Go. Но с + go build +
вы по-прежнему ограничены запуском вашего двоичного файла из текущего каталога. Чтобы использовать вновь созданные исполняемые файлы из любой точки вашей системы, вы можете установить их с помощью + go install +
.
Установка программ Go с помощью + go install
До сих пор в этой статье мы обсуждали, как генерировать исполняемые файлы из наших исходных файлов + .go +
. Эти исполняемые файлы полезны для распространения, развертывания и тестирования, но они еще не могут быть выполнены вне их исходных каталогов. Это может быть проблемой, если вы хотите активно использовать свою программу, например, если вы разработали инструмент командной строки, чтобы помочь вашему рабочему процессу в вашей собственной системе. Чтобы упростить использование программ, вы можете установить их в свою систему и получать к ним доступ из любого места.
Чтобы понять, что подразумевается под этим, вы будете использовать команду + go install +
для установки вашего примера приложения.
Команда + go install +
ведет себя почти идентично + go build +
, но вместо того, чтобы оставлять исполняемый файл в текущем каталоге или каталоге, указанном флагом + -o +
, он помещает исполняемый файл в `+ $ GOPATH / bin + `каталог.
Чтобы узнать, где находится каталог + $ GOPATH +
, выполните следующую команду:
go env GOPATH
Вывод, который вы получите, будет различным, но по умолчанию это каталог + go +
внутри вашего каталога + $ HOME +
:
Output$HOME/go
Поскольку + go install +
поместит сгенерированные исполняемые файлы в подкаталог + $ GOPATH +
с именем + bin +
, этот каталог необходимо добавить в переменную окружения + $ PATH +
. Это описано в шаге «Создание рабочего пространства Go» обязательной статьи https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment- for-go [Как установить Go и настроить среду локального программирования].
Установив каталог + $ GOPATH / bin +
, вернитесь в каталог + greeter +
:
cd ..
Теперь запустите команду установки:
go install
Это соберет ваш двоичный файл и поместит его в + $ GOPATH / bin +
. Чтобы проверить это, запустите следующее:
ls $GOPATH/bin
Это перечислит содержимое + $ GOPATH / bin +
:
Outputgreeter
Установив двоичный файл, проверьте, будет ли программа работать вне ее исходного каталога. Вернитесь в свой домашний каталог:
cd $HOME
Используйте следующую команду для запуска программы:
greeter
Это приведет к следующему:
OutputHello, World!
Теперь вы можете брать программы, которые вы пишете, и устанавливать их в свою систему, что позволяет вам использовать их где угодно, когда вам это нужно.
Заключение
В этом руководстве вы продемонстрировали, как набор инструментов Go позволяет легко создавать исполняемые файлы из исходного кода. Эти двоичные файлы можно распространять для запуска в других системах, даже в тех, которые не имеют инструментов и сред Go. Вы также использовали + go install +
для автоматической сборки и установки наших программ в виде исполняемых файлов в системном + $ PATH +
. С помощью + go build
и` + go install on` вы теперь можете делиться и использовать свое приложение по своему желанию.
Теперь, когда вы знакомы с основами + go build +
, вы можете изучить, как создавать модульный исходный код, с помощью https://www.digitalocean.com/community/tutorials/customizing-go-binaries-with-build-tags [ Учебник по настройке Go Binaries с тегами сборки], или как создавать сборки для разных платформ с помощью Building Приложения Go для разных операционных систем и архитектур. Если вы хотите узнать больше о языке программирования Go в целом, ознакомьтесь со всей https://www.digitalocean.com/community/tutorial_series/how-to-code-in-go[How To Code in Go серией .