Можно ли связать объектные файлы, созданные из набора инструментов Go, с помощью компоновщика gcc/clang?

# #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, а не здесь.