我已经在 llvm-dev 上阅读了这个线程并且面临同样的问题:我无法在.llvm-link
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>
^
在阅读如何使用 LLVM >= 3.1 将对象链接到库之后?(没有 GNU ld),我还尝试了 llvm2.9 版本的llvm-ld。
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!
所以我该怎么做?
更新
然后我阅读了从 LLVM 位码编译对象时无法链接静态库。并在更改订单时发现llvm-ld有效:
llvm-ld --disable-opt main.bc libcalc.la -o test
但llvm-link
仍然失败。