【发布时间】:2011-04-24 22:26:34
【问题描述】:
我为 Clang 使用哪个链接器?
如果我使用 Clang 或 GNU linker (ld) 作为链接器,我会收到大量错误,就好像我没有链接到标准库一样。
g++ $(OBJS) -o $(BINDIR)/obtap
看来我必须使用 g++ 来链接我的 Clang 对象。
【问题讨论】:
我为 Clang 使用哪个链接器?
如果我使用 Clang 或 GNU linker (ld) 作为链接器,我会收到大量错误,就好像我没有链接到标准库一样。
g++ $(OBJS) -o $(BINDIR)/obtap
看来我必须使用 g++ 来链接我的 Clang 对象。
【问题讨论】:
我运行的是“clang”而不是“clang++”,这意味着它没有链接 C++ 标准库。
【讨论】:
跟进:现在是 2016 年,llvm 在他们自己的链接器上取得了一些稳定的进展。它被称为“lld”,the website is here. 它可以很好地创建 i386 和 x86_64 二进制文件,同时针对其他系统的工作正在进行中。
这应该消除对 BSD 的 GNU 工具的依赖,一旦它被认为足够稳定。
【讨论】:
您不必使用 llvm 的链接编辑器。我将避免涉及技术细节,但简而言之,此时您将需要一个典型的 Unix 链接编辑器来使用 Clang(阅读:GNU ld 或 Sun ld)。甚至 llvm-ld 也使用底层平台的链接器来链接原生二进制文件。
【讨论】: