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