5
我有一个llvm模块,我倾销为llvm::WriteBitcodeToFile
的位代码文件。我想将此位代码文件转换为包含模块中功能的本机可动态加载库。从LLVM位创建位置独立的目标文件位代码
我该怎么做?我尝试使用llc
对于这一点,但是这将产生代码,显然是不重定位的,因为执行以下步骤之后:
llc -enable-pie -cppgen=functions -filetype=asm executableModule -o em.s
然后,用GNU as
assemblying成目标文件:
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
嗨。你会告诉选择“-relocation-model”的选项吗?我可以为“lli”找到它,但“lli”不是“llc”。 – beroal