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