# #go #go-toolchain
Вопрос:
исполняемые файлы, созданные компилятором Go, несовместимы в целевой среде, так как загрузчик ожидает, что разделы программы будут расположены в определенном порядке.
В результате я пытаюсь скомпилировать исходный код Go, используя go tool compile
для создания .o
файлов, которые я хочу связать с помощью опции gcc/clang
компоновщика вместо go tool link
Совместимы ли объектные файлы, созданные с помощью go build, для связи с gcc/clang
цепочкой инструментов ?
Комментарии:
1. Вместо вызова gc или компоновщика вы должны попробовать
buildmode
: Запуститеgo help buildmode
для получения подробной информации.2. @Volker спасибо, я смог создать статическую или общую библиотеку с помощью этой опции. Но это включает в себя много времени выполнения go во встроенной библиотеке. Если мне придется связать эту библиотеку вместе с другими библиотеками, созданными с использованием clang, это не разрешит символы, так как статически построенная библиотека содержит символы gcc:
/usr/lib/llvm-5.0/bin/ld.lld: error: undefined symbol: stderr >>> referenced by gcc_libinit.c:29
Есть ли способ создать среду выполнения go без символов glibc, чтобы я мог использовать архив, не полагаясь на набор инструментов gcc ?3. Вероятно, вам следует задать этот вопрос в списке рассылки golang-nuts, а не здесь.