我已經閱讀LLVM-dev的this thread,並面臨着同樣的問題:我不能LLVM-AR archieve庫與其他位碼文件與llvm-link
幫助鏈接到另一個單位碼文件。是否可以將bitcode與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-ld --disable-opt libcalc.la main.bc -o test
然而libcalc.la
是不掛入模塊正確lli
報告:
LLVM ERROR: Program used external function 'Square' which could not be resolved!
那麼應該怎麼辦?
UPDATE
我然後讀Can't link against static library when compiling objects from LLVM bitcode.,發現LLVM-LD改變訂單時 WORKS:
llvm-ld --disable-opt main.bc libcalc.la -o test
但llvm-link
仍然失敗。
可以使用金LTO插件 - 那裏是保持組合IR文件的選項。 –
@ SK-邏輯謝謝。但是,確切的選擇是什麼呢?似乎llvm文檔(http://llvm.org/docs/GoldPlugin.html)包含的內容很少。 –
它被稱爲'也-emit-llvm' –