5
llvm::WriteBitcodeToFile
でビットコードファイルとしてダンプしたllvmモジュールがあります。このビットコードファイルを、モジュール内の関数を含む動的にロード可能なネイティブライブラリに変換する必要があります。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