У меня есть модуль llvm, который я сбросил в качестве файла биткода с llvm::WriteBitcodeToFile
. Я хочу превратить этот файл в обычную динамически загружаемую библиотеку, содержащую функции в модуле.создать позицию независимого объектного файла из битового кода LLVM
Как это сделать? я попытался с помощью llc
для этого, но это дает код, по-видимому, не является перемещаемым, поскольку после выполнения следующих действий:
llc -enable-pie -cppgen=functions -filetype=asm executableModule -o em.s
затем, сборочные производства с гну as
в объектный файл:
as -o mylib.o em.s
наконец , пытаясь произвести общую библиотеку с:
gcc -shared -o libmyfile.so -fPIC mylib.o
завершается с ошибкой:
/usr/bin/ld: error: mylib.o: requires dynamic R_X86_64_PC32 reloc against 'X.foo' which may overflow at runtime; recompile with -fPIC
collect2: ld returned 1 exit status
спасибо !!!!, есть ли инструмент для сборки библиотеки непосредственно из битового кода IR, не полагаясь на ассемблер? – lurscher
Я видел, что llc поддерживает собственный код вывода, но он экспериментальный. Существует ли для этого подход к качеству продукции? – lurscher
Привет. Не могли бы вы указать, где описывается опция «-оговор-модель»? Я могу найти его для «lli», но «lli» не «llc». – beroal