解决Clang编译器出现/usr/bin/ld: crtbegin.o: No such file: No such file or directory
今天在使用Clang编译器编译项目时出现问题,项目使用了CMake,在cmake时报错:
1-- Detecting C compiler ABI info - failed
2/usr/bin/ld: crtbegin.o: No such file: No such file or directory
3 clang-9: error: linker command failed with exit code 1 (use -v to see invocation)
如下图:
在之前还是正常的。 写一个简单的C程序进行编译
同样出现:
1/usr/bin/ld: crtbegin.o: No such file: No such file or directory
使用
1clang -v
查看输出:
在另一台可以正常使用的机器上使用同样的命令输出:
可以看到clang使用的GCC安装路径未被正确选择,由于之前Clang9是使用的GCC 4.9.3编译的,但是现在找不到相应的或者更高版本的GCC,所以出现错误:
1/usr/bin/ld: crtbegin.o: No such file: No such file or directory
导致CMake测试编译器的程序编译测试未通过。 既然,Clang是在
/usr/lib/gcc/x86_64-unknown-linux-gnu/
或者
/usr/lib/gcc/x86_64-redhat-linux-gnu/
目录查找相应的GCC版本的,准确地说应该是在/usr/lib/gcc/目录中的所有子目录中进行查找的。那看看只需要把相应的GCC版本符号连接到此目录即可:
1ln -s /usr/local/gcc-4.9.3/lib/gcc/x86_64-unknown-linux-gnu/4.9.3 /usr/lib/gcc/x86_64-redhat-linux
或者
1ln -s /usr/local/gcc-4.9.3/lib/gcc/x86_64-redhat-linux-gnu/4.9.3 /usr/lib/gcc/x86_64-redhat-linux
现在再查看,使用安装的GCC 4.9.3了
再编译前面写的测试程序:
现在正常了。
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2020/2020-10-30-解决Clang编译器出现_usr_bin_ld-crtbegin.o-No-such-file-No-such-file-or-directory/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。