Являются ли переносные устройства Golang переносимыми?
Предположим, что я являюсь главным пользователем Linux, но я разрабатываю приложение в Go, которое я хочу быть кросс-платформой. Я искал вокруг, но я не могу найти информацию, чтобы освободить следующее:
- Если я
go install
является двоичным файлом в моей системе amd64 Ubuntu, будет ли он работать и на 64-битной системе Ubuntu/Debian другого уровня?
- Как я могу использовать
go install
для сборки двоичного кода x86_64, который также будет запущен из-за коробки на 32-разрядных DebianLike?
- Если я должен использовать Windows для создания двоичного файла, который будет запускаться в Windows, как я могу также убедиться, что даже если моя система Windows будет 64-битной, будет создан исполняемый файл для x86_64?
Мои вопросы по сути сводятся к тому, "как статичный/переносимый идет компоновщик/компилятор?"
Ответы
Ответ 1
- Да, это будет; это касается практически всех двоичных файлов, скомпилированных для 64-разрядного Linux, а не только написанных в Go (за исключением разделяемых библиотек, на которые Go не полагается)
- Вы можете установить переменные среды
GOOS
и GOARCH
перед созданием: GOOS=windows GOARCH=386 go build
(или go install
или что-то еще) и т.д.
- По умолчанию для вашей системы будет создан двоичный файл, но это не обязательно - см. 2