У меня возникли проблемы с попыткой перекрестного компиляции приложения Go на OS X для запуска на linux/amd64. В рассматриваемом приложении используется libvips с помощью этого vips go package. Таким образом, он использует CGO и должен быть скомпилирован с поддержкой CGO.Кросс-компиляция приложения CGO на darwin для linux
Я на Go 1.4 и выполнив следующую команду сборки
GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build
, но в конечном итоге с ошибкой компоновщика
ld: unknown option: --build-id=none clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я предполагаю, что я, вероятно, нужно добавить что-то вроде аргумента -ldflags
, но я не уверен.
Возможно ли выполнить кросс-компиляцию приложений CGO таким образом, или мне нужно сделать встроенную сборку в целевой системе, чтобы избежать проблем и головных болей?
У меня нет OSX, но это выглядит как плохая версия ld или что-то в этом роде. Я бы сказал, что проще просто запустить vm (работает ли qemu на Mac?) И делать компиляцию там. – OneOfOne
Да, я могу встроить компиляцию с помощью виртуальной машины, и, конечно же, весь процесс может быть автоматизирован. Я просто пытался сразиться и посмотреть, могу ли я просто скомпилировать все это одним движением, как я могу, с помощью программ, не связанных с CGO golang. – cpjolicoeur
. Я попытаюсь посмотреть, сможете ли вы получить новую/новую версию clang и ld, но, возможно, кто-то еще будет знать лучше. – OneOfOne