Clang 的链接器
我应该为 Clang 使用哪个链接器?
如果我使用 Clang 或 GNU 链接器 (ld) 作为链接器,我收到大量错误,就好像我没有链接到标准库一样。
g++ $(OBJS) -o $(BINDIR)/obtap
看来我必须使用 g++ 才能链接我的 Clang 对象。
Which linker do I use for Clang?
If I use Clang or GNU linker (ld
) as the linker, I get massive amounts of errors as if I didn't link with the standard library.
g++ $(OBJS) -o $(BINDIR)/obtap
It seems I have to use g++ in order to link my Clang objects.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我运行的是“clang”而不是“clang++”,这意味着它没有链接 C++ 标准库。
I was running 'clang' instead of 'clang++', meaning it didn't link the C++ standard library.
您不必使用 llvm 的链接编辑器。我将避免讨论技术细节,但是,简而言之,您此时需要有一个典型的 Unix 链接编辑器来使用 Clang(请阅读:GNU ld 或 Sun ld)。甚至 llvm-ld 也使用底层平台的链接器来链接本机二进制文件。
You do not have to use llvm's link editor. I will avoid getting into the technical details, but, in short, you will need to have a typical Unix link editor available to use Clang at this time (read: GNU ld or Sun ld). Even llvm-ld uses the underlying platform's linker to link native binaries.
后续:现在已经是 2016 年了,LLVM 在自己的链接器上取得了一些稳定的进展。它的名称为“lld”,网站位于此处。它可以很好地创建 i386 和 x86_64 二进制文件,同时针对其他系统的工作正在进行中。
一旦被认为足够稳定,这应该会消除 BSD 系统对 GNU 工具的依赖。
Follow-up: it's now 2016, and LLVM has made some steady progress on their own linker. It's called "lld", and the website is here. It works fine to create i386 and x86_64 binaries, while work is ongoing to target other systems.
This should remove the dependency on GNU tools for BSD systems, once it is considered stable enough.