解决Clang编译器出现/usr/bin/ld: crtbegin.o: No such file: No such file or directory

本文档描述了在使用Clang编译器时遇到的crtbegin.o文件缺失问题,该问题源于GCC安装路径未被正确选择。作者通过检查不同机器的clang-v输出,发现Clang在寻找特定版本的GCC。为了解决这个问题,作者建议创建符号链接,将所需的GCC版本链接到/usr/lib/gcc/目录下。经过此操作,编译问题得到解决,测试程序能够正常编译运行。
摘要由CSDN通过智能技术生成

今天在使用Clang编译器编译项目时出现问题,项目使用了CMake,在cmake时报错:

-- Detecting C compiler ABI info - failed
/usr/bin/ld: crtbegin.o: No such file: No such file or directory
    clang-9: error: linker command failed with exit code 1 (use -v to see invocation)

如下图:
在这里插入图片描述
在之前还是正常的。
写一个简单的C程序进行编译
在这里插入图片描述
同样出现:

/usr/bin/ld: crtbegin.o: No such file: No such file or directory

使用

clang -v

查看输出:
在这里插入图片描述
在另一台可以正常使用的机器上使用同样的命令输出:
在这里插入图片描述
可以看到clang使用的GCC安装路径未被正确选择,由于之前Clang9是使用的GCC 4.9.3编译的,但是现在找不到相应的或者更高版本的GCC,所以出现错误:

/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版本符号连接到此目录即可:

ln -s /usr/local/gcc-4.9.3/lib/gcc/x86_64-unknown-linux-gnu/4.9.3 /usr/lib/gcc/x86_64-redhat-linux

或者

ln -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了
在这里插入图片描述
再编译前面写的测试程序:
在这里插入图片描述
现在正常了。

从引用和引用[2]来看,出现了类似的错误信息 "/usr/bin/ld: crtbegin.o: No such file: No such file or directory"。这个错误通常表示缺少某个必要的库文件或依赖项。根据引用的描述,可能是由于GCC的安装路径未正确选择引起的。由于之前使用的是GCC 4.9.3编译Clang 9,但现在找不到相应的或更高版本的GCC,所以出现了这个错误。 要解决这个问题,可以尝试以下步骤: 1. 确认你的系统中是否已正确安装了GCC。可以使用命令`gcc -v`或`gcc --version`来检查GCC的版本信息。如果没有安装GCC,可以使用包管理器来安装。例如,对于Ubuntu系统,可以使用以下命令安装GCC:`sudo apt-get install build-essential`。 2. 如果已经安装了GCC,但仍然出现错误,可能是因为GCC的安装路径未正确选择。可以尝试使用命令`update-alternatives --config gcc`来选择正确的GCC版本。在提示中选择正确的版本并确认。 3. 如果以上步骤都没有解决问题,可能需要更新或重新安装Clang。可以使用包管理器来更新或重新安装Clang。例如,对于Ubuntu系统,可以使用以下命令更新或重新安装Clang:`sudo apt-get install --reinstall clang`。 总结一下,当出现类似错误 "/usr/bin/ld: crtbegin.o: No such file: No such file or directory" 时,可以尝试确认是否正确安装了GCC,并选择正确的GCC版本。如果问题仍然存在,可以考虑更新或重新安装Clang。希望这些步骤可以帮助你解决问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值