Как собрать полноценный двоичный файл программы с gccgo?

Я заметил, что при использовании go build двоичный результат может превышать 2 МБ; но используя gccgo бинарный файл меньше 35к.

Другая проблема, которую я заметил при использовании gccgo является то, что созданный двоичный файл не может быть запущен на другом Linux-боксе (отсутствует libgo.so Я верю) но go build двоичный файл работает очень хорошо (поэтому я представляю его, потому что двоичный файл включает в себя все, что необходимо для запуска?); есть ли способ сделать это с gccgo?

3 ответа

Решение

Вы должны использовать флаг -static:

Используйте параметр -static для создания полностью статической ссылки (по умолчанию для компилятора gc).

http://golang.org/doc/install/gccgo

Вы можете связать libgo статически, в то же время динамически связывая системные библиотеки, используя опцию -static-libgo. (Это относится только к gccgo).

С Go 1.8 или выше, если Go построен с CGO_ENABLED=1 (по умолчанию 1), нативная компиляция связывается динамически. Проверьте эту переменную, запустив go env CGO_ENABLED, Вы можете перейти на статическую ссылку, установив переменную среды CGO_ENABLED в 0 при запуске go build.

CGO_ENABLED=0 go build

Кстати, кросс-компиляция использует статическую связь автоматически.

Другие вопросы по тегам