海湾合作委员会的错误:海湾合作委员会:错误试图执行“cc1”:execvp:没有这样的文件或目录

我已经成功地在Linux Mint 12上使用gcc了。现在我得到一个错误。 我最近做了一些.so不久之前build立和安装了Clang,但是从这两个事件都成功编译,所以不知道有什么变化。 我用GUI软件pipe理器删除,然后再次安装gcc,但结果是一样的:

~/code/c/ut: which gcc /usr/bin/gcc ~/code/c/ut: gcc -std=c99 -Wall -Wextra -g -c object.c gcc: error trying to exec 'cc1': execvp: No such file or directory 

这是因为gcc调用许多其他可执行文件来完成input处理,并且cc1不在包含的path中。

在shelltypes上: –

 whereis cc1 

如果findcc1,那么最好在gcc目录下创build一个软链接,否则就意味着cc1没有安装,你必须使用软件包pipe理器来安装gcc-c++

在Debian / Ubuntu上,我通过重新安装build-essential解决了这个问题:

 sudo apt-get update sudo apt-get install --reinstall build-essential 

今天我遇到了一个类似的问题 – 一个同事不能build立他的软件,但我可以build立它。 当他运行gcc ,找不到cc1

他的可执行的path看起来很合理,但是我不能轻易复制这个失败的事实表明他的环境中有一些东西是原因。

最终我们发现在他的环境中定义了GCC_EXEC_PREFIX ,这是罪魁祸首,并且在searchcc1时误导了gcc 。 这是他的shell启动脚本的一部分,旨在解决不再使用的SPARC / Solaris系统的限制。 通过不设置这个环境variables解决了问题。

http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html

 yum install gcc-c++ 

在CentOS上。

确保你的GCC_EXEC_PREFIX(env)没有被导出,你的PATH被导出到正确的工具链。

我通过显式安装g ++来解决这个问题:

 sudo apt-get install g++ 

Ubuntu 12.04在安装pandas时遇到了问题。 (感谢perilbrain。)

如果您尝试在64位操作系统上运行32位gcc二进制文件,并且缺less32位glibc,则这也可能是显示的错误消息。 根据本自述 :“对于64位系统,运行这些工具需要32位libc和libncurses。” 在这种情况下,没有问题的path和cc1实际上被发现,但报告缺less 32位glibc。

对我有什么帮助的是使用llvm-gcc来代替:

 ln -s $(which llvm-gcc) /usr/local/bin/gcc 

错误消息告诉你,没有find构build时依赖关系,所以你只需要 – 将适当的包安装到你的系统(使用包pipe理器,从源代码或其他方式构build)

什么是cc1

cc1是内部命令,它将预处理的C语言文件转换为程序集。 这是编译C的实际部分。对于C ++,有cc1plus和用于不同语言的其他内部命令。

从 Alan Shutko的 这个答案中 获得 。

解决scheme

Ubuntu / Linux Mint

 sudo apt-get install --reinstall build-essential 

docker高山环境

如果您处于docker高山环境中,请添加以下内容:

 RUN apk add alpine-sdk 

到你的Dockerfile

采取从github

你可以通过运行这个来解决这个问题:在Fedora上:

 sudo dnf install redhat-rpm-config