提问者:小点点

Clang链接器问题(从源代码到gcc-snapshot)


我似乎无法让这起作用。我使用--with-gcc-toolchain=进行了配置,在equals之后,我将gcc所在的目录(/usr/lib/gcc-Snapshot/bin)放入其中。

我还研究了“clang linker problem”的答案,但我不知道如何才能得到可接受的答案以找到正确的位置,并且symlink答案本来可以工作,除非它正在搜索的所有目录都存在(将lib文件夹从gcc-snapshot复制到其中一个include位置似乎没有帮助)。

正如在另一个问题中所建议的,clang++test.cpp-v:

bob@bob:~/programming$clang++test.cpp-V
clang版本3.3(trunk 171350)
目标:x86_64-unknown-linux-gnu
线程模型:POSIX
“/home/bob/programming/build/release+asserts/bin/clang”-cc1-triple x86_64-unknown-linux-gnu-emit-obj-mrelax-all-disable-free-main-file-name test.cpp-mrelocation-model statist-mdisable-fp-elim-fmath-errno-masm-verbose-mconstructor-aliases-munwind-tables-target-cpu x86-64-target-linker-version 2.22--o/tmp/test-pwib4m.o-x C++test.cpp
clang-cc1基于LLVM 3.3 svn默认目标x86_64-unknown-linux-gnu
忽略不存在的目录“/include”
#include“。。。”搜索从此处开始:
#include<...>;搜索从此处开始:
/usr/local/include
/home/bob/programming/build/release+asserts/bin/../lib/clang/3.3/include
/usr/include
搜索列表末尾。
test.cpp:1:10:致命错误:找不到“iostream”文件
#include^
1生成错误。

clang版本3.3(trunk修订版171350)

编辑:Release+Asserts文件夹中没有用于生成的.o文件。这正常吗?如果不是,为什么会出现这种情况,以及我如何修复它(如果我可以将它指向Clang的stdlib,那么它也是可行的)。

编辑2:它也无法编译int main(){return 0;},因为它找不到crtbegin.o。完整输出如下:

/usr/bin/ld:找不到crtbegin.o:没有这样的文件或目录
/usr/bin/ld:找不到-lgcc
/usr/bin/ld:找不到-lgcc_s
CLANG:错误:链接器命令失败,退出代码为1(使用-v查看调用)

-v后的结果与上述相同,但结尾错误不同。

config.log:
可以在此处找到完整文件,但第一行(非注释)是:$../llvm/configure--with-gcc-toolchain=/usr/lib/gcc-snapshot/gcc


共1个答案

匿名用户

我们发现的问题是gcc安装时带有--prefix=/usr/lib/gcc-Snapshot配置参数。llvm是用--with-gcc-toolchain=/usr/lib/gcc-snapshot/gcc参数配置的。它应该与gcc安装前缀相同,即--with-gcc-toolchain=/usr/lib/gcc-snapshot。

该问题当前的第一行是“I configured with The--with-gcc-toolchain=where after equals I put The directory where gcc(/usr/lib/gcc-Snapshot/bin)”,当前的最后一行是“first(non-comment)行是:$../llvm/configure--with-gcc-toolchain=/usr/lib/gcc-Snapshot/gcc”

这令人费解,您可能认为您已经将标志--with-gcc-toolchain=/usr/lib/gcc-snapshot/bin放入,但实际上您已经将标志--with-gcc-toolchain=/usr/lib/gcc-snapshot/gcc放入

无论如何,我认为您应该尝试以下方法。

  1. 删除或重命名构建目录(运行configure命令的目录,即找到config.log文件的目录)我假定它是/home/bob/programming/build目录。
  2. 现在再次创建/home/bob/programming/build目录。它现在应该是空的。
  3. CD/Home/Bob/Programming/Build
  4. 运行以下配置命令。。/llvm/configure--with-gcc-toolchain=/usr/lib/gcc-snapshot
  5. 完成生成过程的其余部分。

问题似乎是您没有正确指定gcc-toolchain前缀。它应该与配置GCC时使用的--prefix参数相同。

在这里报告结果。

另请参见Clang 3.2 build breaks after building gcc 4.7