llvm::WriteBitcodeToFile
ile bitcode dosyası olarak bıraktığım bir llvm modülüne sahibim. Bu bit kodu dosyasını, modüldeki işlevleri içeren dinamik olarak yüklenebilen bir kütüphaneye dönüştürmek istiyorum.LLVM bit kodundan konum bağımsız bir nesne dosyası oluşturun
Bunu nasıl yaparım? Ben bunun için llc
kullanarak çalıştı, ancak bu görünüşte aşağıdaki adımları yaptıktan sonra yana, yeri değişebilen değildir kod üretir: nihayet
as -o mylib.o em.s
: Bir nesne dosyasına gnu as
ile assemblying ardından
llc -enable-pie -cppgen=functions -filetype=asm executableModule -o em.s
ile paylaşılan bir kütüphane üretmek için çalışıyor:
gcc -shared -o libmyfile.so -fPIC mylib.o
hata ile başarısız:
/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
teşekkürler !!!!, assembler'a güvenmeksizin kütüphaneyi doğrudan IR bit kodundan oluşturmak için bir araç var mı? – lurscher
llc'nin yerel kod çıktısını desteklediğini gördüm, ancak deneysel. Bunun için üretim kalitesi yaklaşımı var mı? – lurscher
Merhaba. Seçenek olan "-konum modeli" nin tarif edildiğini söyleyebilir misiniz? Onu "lli" için bulabilirim, ama "lli" "llc" değil. – beroal