如何使用LLVM链接器?

9

LLVM提供了2个工具llvm-link和llvm-ld。我想知道:

  • 如何将所有.o文件合并为一个?

  • 如何设置一个soname,就像使用gcc -Wl,-soname,libsomething.so.1一样?

我想用C++实现这个操作,但如果你可以向我展示如何在命令行上完成,我会自己在C++中实现。

谢谢!


你到底想做什么?链接目标文件还是LLVM位码文件?创建一个.so文件? - Richard Pennington
1个回答

12
  • llvm-link 是用于将 LLVM IR 文件链接(合并)到另一个 LLVM IR 文件中的工具。
  • llvm-ld 试图兼容 ld。请注意,LLVM 目前没有真正的链接功能,因此 llvm-ld 调用 gcc 来执行实际的最终阶段。

请注意,如果您只想使用 GCC 的功能,请使用 clang 驱动程序:

clang -c file.c -fpic
clang -shared file.o -o file.so

你也可以像在 gcc 中一样,向 clang 传递 -Wl 标志:

clang -shared file.o -Wl,-soname,libfile.so.8 -o file.so

3
另外,请不要直接使用 llvm-ld。事实上,除非您确切知道自己在做什么并且没有编译器驱动程序来为您处理它,否则请不要直接使用任何链接器。 - echristo
4
在Mac中,使用“-dynamiclib”来替换“-shared ....-Wl,-soname,libxxxxx”部分。 - clsung
4
“LLVM目前没有真正的链接能力。” 这种情况仍然存在吗?(请注意http://lld.llvm.org/) - Antonio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接