gpt4 book ai didi

c - 是否可以将 bitcode 与 llvm-ar archieve 链接到单个 bitcode 文件中?

转载 作者:太空狗 更新时间:2023-10-29 17:10:35 25 4
gpt4 key购买 nike

我已阅读 this thread在 llvm-dev 上遇到同样的问题:我无法将 llvm-ar archieve 库与其他 bitcode 文件链接到另一个 bitcode 文件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>
^

阅读后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!

那我该怎么办呢?

更新

然后我读了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 仍然失败。

最佳答案

  • llvm-link 不支持位码存档,AFAIK。它只是遍历提供的输入文件,并尝试将每个文件解析为位码文件(二进制或文本 LLVM IR)。
  • llvm-ld 在较新的 LLVM 中不存在,所以我建议完全远离它。

只需将单独的 .bc 文件与 llvm-link 链接在一起。无论如何,位码文件的归档对链接器的好处与 native 链接不同。

关于c - 是否可以将 bitcode 与 llvm-ar archieve 链接到单个 bitcode 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18976242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com