尝试执行"cc1"时 gcc 错误:execvp:使用非 root 用户运行时没有这样的文件或目录

gcc error trying to exec 'cc1': execvp: No such file or directory when running with non-root user

本文关键字:运行时 文件 用户 cc1 执行 gcc 错误 execvp root      更新时间:2023-10-16

我看到同样的问题已经被问了很多次,但我的问题是不同的。

我在ubuntu 14.04上安装了gcc,它在root用户下工作得很好。当我尝试使用非root用户进行编译时,它会抛出

错误gcc:错误试图执行'cc1': execvp:没有这样的文件或目录

一旦我用root用户编译文件,非root用户可以执行文件而没有任何错误,但它不能编译文件。

我怀疑文件权限有问题,我检查了cc1的权限,非root用户对文件有执行权限。

第一种方式:

root帐户下使用命令:

gcc

cc1的

ls -l $上一个命令的输出

显示cc1gcc的位置以及cc1的权限
检查cc1文件是否有正确的权限

然后在"regular"用户:

gcc

which gcc的输出应该与root相同。

如果正确且gcc的路径与root相同,则将PATH添加到用户的cc1中。

<标题>第二种方式:

root帐户下:

gcc -v hello_world.c 2>&1 | grep cc1

在"regular"帐户。

它将显示用于编译的实际命令。

比较它们并检查权利和PATH,如第一种方式


添加PATH使用:export PATH=$PATH:$add_new_path_to_folder_here

在我的例子中,这个错误发生在试图在Ubuntu上编译ffi, nokogiri和其他gem的更新版本时。gcc -v显示我正在使用gcc和g++ 4.8。

修复是将我的gcc/g++符号链接切换到4.9而不是4.8。

$ which gcc 
$ ls -ld /usr/local/bin/gcc
$ sudo rm /usr/local/bin/gcc
$ sudo ln -s /usr/bin/gcc-4.9 /usr/local/bin/gcc
$ ls -ld /usr/local/bin/gcc