मैं LLVM-देव पर this thread पढ़ लिया है और एक ही समस्या का सामना करना पड़ रहा है: मैं llvm-link
की मदद से एक और एकल bitcode फ़ाइल में अन्य bitcode फाइलों के साथ LLVM-ar archieve पुस्तकालय लिंक नहीं कर सकते।क्या एक बिटकोड फ़ाइल में llvm-ar archieve के साथ बिटकोड को लिंक करना संभव है?
clang -emit-llvm -g -c -o main.bc main.c
clang -emit-llvm -g -c -o calc.bc calc.c
llvm-ar rcs libcalc.la calc.bc
llvm-link libcalc.la main.bc -o test
समस्या एक ही है: llvm-link
शिकायत
llvm-link: libcalc.la:1:2: error: expected integer
!<arch>
^
और How to link object to libraries with LLVM >= 3.1 ? (no GNU ld) पढ़ने के बाद, मैं भी LLVM-ld के llvm2.9 संस्करण की कोशिश की।
LLVM ERROR: Program used external function 'Square' which could not be resolved!
तो मुझे क्या करना चाहिए:
llvm-ld --disable-opt libcalc.la main.bc -o test
तथापि libcalc.la
सही ढंग से और lli
रिपोर्ट मॉड्यूल में नहीं है लिंक कर दिया है?
अद्यतन
मैं तो Can't link against static library when compiling objects from LLVM bitcode. पढ़ सकते हैं और पाते हैं कि LLVM-ld काम करता है जब आदेश को बदलने:
llvm-ld --disable-opt main.bc libcalc.la -o test
लेकिन llvm-link
अभी भी विफल रहता है।
आप सोने LTO प्लगइन का उपयोग कर सकते हैं - वहाँ एक संयुक्त आईआर फ़ाइल रखने के लिए एक विकल्प है। –
@ एसके-तर्क धन्यवाद। लेकिन तब सही विकल्प क्या है? ऐसा लगता है कि llvm दस्तावेज़ (http://llvm.org/docs/GoldPlugin.html) इसमें इसके बारे में बहुत कम है। –
इसे 'em-emit-llvm' –