【完美解决源码安装g++报错问题】g++: error trying to exec ‘cc1plus‘: execvp: No such file or directory

本文解决了一个在使用GCC 5.4.0进行C++编译过程中遇到的问题:编译器尝试执行cc1plus时报告找不到文件。通过逐步排查,发现问题是由于依赖库未正确链接导致。文中详细记录了解决过程及最终解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:我在源码安装完gcc-c++-5.4.0后使用g++编译文件时出现一下错误。

g++: error trying to exec 'cc1plus': execvp: No such file or directory

原因分析:

        报错意思是,g++在执行‘cc1plus’这个文件时出错,没找到。所以我先看下是不是真的没有这个文件,使用以下命令在环境中查找文件

[root@localhost test]# find / -name "cc1plus"
/root/download/gcc-5.4.0/host-x86_64-unknown-linux-gnu/gcc/cc1plus
/root/download/gcc-5.4.0/host-x86_64-unknown-linux-gnu/prev-gcc/cc1plus
/root/download/gcc-5.4.0/host-x86_64-unknown-linux-gnu/stage1-gcc/cc1plus
/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/cc1plus
/usr/local/gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/cc1plus

然后在g++的安装目录下找到了这个文件,我把g++安装在/usr/local/gcc-5.4.0目录下。

        思考:有这个文件也报错,说明没有执行权限或者这个文件坏了。g++在编译的时候,实际上时调用的‘cc1plus’这个程序编译,我直接调用这个文件编译我在test目录写的test.cpp文件。

[root@localhost test]# /usr/local/gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/cc1plus test.cpp
/usr/local/gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/cc1plus: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory

        ok,原因找到了。‘cc1plus’程序依赖库出问题了。ldd看下依赖库情况。

[root@localhost test]# ldd /usr/local/gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/cc1plus
        linux-vdso.so.1 =>  (0x00007fff343fc000)
        libmpc.so.3 => /lib64/libmpc.so.3 (0x00007f1057ae4000)
        libmpfr.so.1 => not found
        libgmp.so.3 => not found
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f10578df000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f10575dd000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f105721b000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f1057d19000)
        libmpfr.so.4 => /lib64/libmpfr.so.4 (0x00007f1056fc0000)
        libgmp.so.10 => /lib64/libgmp.so.10 (0x00007f1056d49000)

        发现libmpfr.so.1和libgmp.so.3两个库没链接到。这是我才焕然大悟,我在安装这两个库时,我是安装在/usr/local/目录下,没有添加软连接。(=_=估计是这个原因了)

        原因发现了问题就好办了。有多种解决办法

1、可以在/etc/ld.so.conf.d/目录下创建两个文件,mpfr.conf和gmp.conf。里面把这两个库对应的安装路径下的lib目录填进去。然后执行ldconfig就ok了。告诉ldd在链接的时候去哪里找依赖库。

2、最简单的,直接创建软链接。

[root@localhost test]# ln -s /usr/local/mpfr-2.4.2/lib/libmpfr.so.1 /lib64/libmpfr.so.1
[root@localhost test]# ln -s /usr/local/mpfr-2.4.2/lib/libgmp.so.3 /lib64/libgmp.so.3
[root@localhost test]# ldd /usr/local/gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/cc1plus
        linux-vdso.so.1 =>  (0x00007ffce0bfb000)
        libmpc.so.3 => /usr/lib64/libmpc.so.3 (0x00007feb3f994000)
        libmpfr.so.1 => /usr/lib64/libmpfr.so.1 (0x00007feb3f747000)
        libgmp.so.3 => /lib64/libgmp.so.3 (0x00007feb3f4f1000)
        libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007feb3f2ed000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00007feb3efeb000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00007feb3ec29000)
        /lib64/ld-linux-x86-64.so.2 (0x00007feb3fbcb000)
        libmpfr.so.4 => /usr/lib64/libmpfr.so.4 (0x00007feb3e9ce000)
        libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007feb3e757000)

        现在查看这个程序的库链接就ok了。

        再来编译下test.cpp。

[root@localhost test]# g++ test.cpp
[root@localhost test]# ./a.out
1223
[root@localhost test]#

【思考】遇到报错还是一步一步分析,别像无头苍蝇一样乱撞。。。

启发:(40条消息) 【解决】g++: error trying to exec ‘cc1plus’: execvp_RocWay007的博客-优快云博客_g++: error trying to exec 'cc1plus': execvp:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值