gcc: error trying to exec ‘cc1plus‘: execvp: 没有那个文件或目录

运行cpp_extension的Python程序

(话说越来越感受到自己的成长了)之前一直最喜欢yolov5这种纯python写的基于pytorch的程序,既不需要安装cuda(只需要cuda runtime提供一些动态支持),也不需要编译,运行实在太简单方便了。

现在倒是慢慢地开始能接受各种各样的程序了(包括写的cpp extension的程序),并自行编译。

最重要的是!!!

能够依靠自己的经验解决各种报错问题了:

跑程序报错:

“/torch/include/ATen/cuda/CUDAContext.h:5:30: fatal error: cuda_runtime_api.h: 没有那个文件或目录”,这时候上网查就要说没安装cuda,cuda版本不对之类,或者在bashrc中添加路径,然而我既装好了cuda,又配置好了路径,感觉可能是程序的读取CUDA路径的方式有问题,直接在命令行重新export CUDA_HOME=xxx(区别于bashrc中export CUDA_HOME=$CUDA_HOME:的方式,原因之前文章提过)。

gcc: error trying to exec ‘cc1plus’: execvp: 没有那个文件或目录"

之后又报错:
“gcc: error trying to exec ‘cc1plus’: execvp: 没有那个文件或目录”。

下意识在网上查,有说没安装gcc/g++,有说改权限。可能确实适用于他们的问题,但是实际上相同的报错往往由于不同的原因。

分别使用gcc -vg++ -v,返回以下信息:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)

分别去对应路径下,看到gcc-7中确实没有"cc1plus",而只有"cc1",而gcc-5中有"cc1plus",虽然不太懂具体的原理,但根据g++ -v的输出是"gcc version 5.4.0 20",猜测是不是g++也是gcc的一种延申,只不过用了"cc1plus"的编译器而非"cc1",因此在gcc版本为7的情况下,也会在相同的文件夹下寻找"cc1plus",自然找不到,于是把gcc的版本切换为5:

sudo update-alternatives --config gcc

其中有gcc5和gcc7,选择gcc5,完成!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值