основное введение
Кросс-компиляция — это компиляция программ для других платформ на разных платформах, например, компиляция программ Windows в Linux, компиляция программ Linux в Windows и компиляция 64-битных программ в 32-битных системах.Представленный сегодня Gox — один из таких инструментов.
Среда конфигурации
Сначала настройте переменные среды языка Go и~/.bash_profile
В настройках кратко объясните, почему вы хотите добавить его в этот файл.Во-первых, следующий код действителен только для текущей сессии после выполнения терминала, и закрытие переменной терминала будет недействительным, и.bash_profile
Файл будет выполняться один раз каждый раз, когда пользователь входит в систему, и переменные среды устанавливаются в файл, а переменные среды будут инициализироваться каждый раз, когда они входят в систему. Конечно, поставить~/.bashrc
также возможен в , он будет выполняться не только при входе в систему, но и при каждом открытии терминала.
export GOPATH=${HOME}/go
export GOROOT=/usr/local/go
export GOBIN=${GOPATH}/bin
export PATH=${PATH}:${GOBIN}
GOROOT и GOPATH должны быть установлены в соответствии с вашей собственной ситуацией, не следуйте слепо.После завершения настройки, если вы хотите, чтобы файл вступил в силу немедленно, вы можете выполнитьsource
Заказ.
source ~/.bash_profile
Если ваш терминал имеетzsh
, после повторного открытия терминала все еще может произойти сбой, тогда вы можете~/.zshrc
Добавить последнюю строку файлаsource
инструкция.
source ~/.bash_profile
установка гокс
Выполните следующую команду в терминале для установки.
go get github.com/mitchellh/gox
После завершения установки выполнитеgox -h
, если отображается справочная информация, это означает, что установка прошла успешно.
➜ ~ gox -h
Usage: gox [options] [packages]
Gox cross-compiles Go applications in parallel.
If no specific operating systems or architectures are specified, Gox
will build for all pairs supported by your version of Go.
......
Использование гокса
Как обычно, мы сначала предлагаемhello,world
демо-код.
package main
import "fmt"
func main() {
fmt.Print("hello,world")
}
На этом этапе введите рабочий каталог в проекте ($GOPATH/src/[имя вашего проекта]) и выполните его напрямую.gox
Команда создаст исполняемые файлы для 21 различных платформ, включая Linux, Windows, FreeBSD, Darwin и другие системы.
➜ hello gox
Number of parallel builds: 3
--> linux/amd64: hello
--> openbsd/amd64: hello
--> darwin/386: hello
--> linux/mipsle: hello
--> windows/386: hello
--> windows/amd64: hello
--> darwin/amd64: hello
--> linux/386: hello
--> linux/s390x: hello
--> netbsd/386: hello
--> linux/arm: hello
--> freebsd/386: hello
--> netbsd/amd64: hello
--> freebsd/arm: hello
--> freebsd/amd64: hello
--> openbsd/386: hello
--> linux/mips64: hello
--> linux/mips: hello
--> linux/mips64le: hello
--> netbsd/arm: hello
Но я не хочу генерировать программы для всех платформ сразу, тогда мне нужно указать параметры gox, как показано ниже,os
Параметр указывает имя системы для создания,arch
Определяет архитектуру ЦП.
gox -os "windows" -arch amd64
На самом деле он поддерживает более 21 модели.Они генерируются только по умолчанию.Ниже приводится определение Gox для различных систем.Заинтересованные студенты могут понять сами.
Platforms_1_0 = []Platform{
{"darwin", "386", true},
{"darwin", "amd64", true},
{"linux", "386", true},
{"linux", "amd64", true},
{"linux", "arm", true},
{"freebsd", "386", true},
{"freebsd", "amd64", true},
{"openbsd", "386", true},
{"openbsd", "amd64", true},
{"windows", "386", true},
{"windows", "amd64", true},
}
Platforms_1_1 = append(Platforms_1_0, []Platform{
{"freebsd", "arm", true},
{"netbsd", "386", true},
{"netbsd", "amd64", true},
{"netbsd", "arm", true},
{"plan9", "386", false},
}...)
Platforms_1_3 = append(Platforms_1_1, []Platform{
{"dragonfly", "386", false},
{"dragonfly", "amd64", false},
{"nacl", "amd64", false},
{"nacl", "amd64p32", false},
{"nacl", "arm", false},
{"solaris", "amd64", false},
}...)
Platforms_1_4 = append(Platforms_1_3, []Platform{
{"android", "arm", false},
{"plan9", "amd64", false},
}...)
Platforms_1_5 = append(Platforms_1_4, []Platform{
{"darwin", "arm", false},
{"darwin", "arm64", false},
{"linux", "arm64", false},
{"linux", "ppc64", false},
{"linux", "ppc64le", false},
}...)
Platforms_1_6 = append(Platforms_1_5, []Platform{
{"android", "386", false},
{"linux", "mips64", false},
{"linux", "mips64le", false},
}...)
Platforms_1_7 = append(Platforms_1_5, []Platform{
// While not fully supported s390x is generally useful
{"linux", "s390x", true},
{"plan9", "arm", false},
// Add the 1.6 Platforms, but reflect full support for mips64 and mips64le
{"android", "386", false},
{"linux", "mips64", true},
{"linux", "mips64le", true},
}...)
Platforms_1_8 = append(Platforms_1_7, []Platform{
{"linux", "mips", true},
{"linux", "mipsle", true},
}...)
В дополнение к команде только что есть еще один метод генерации, который объединяет систему и архитектуру с косой чертой и генерирует их в пакетах.
gox -osarch "windows/amd64 linux/amd64"
Поторопитесь и отправьте сгенерированную программу своим друзьям, чтобы они попробовали ее.Выше приведено все содержание этой статьи, спасибо за прочтение.