我已成功在Linux Mint 12上使用gcc。现在我收到错误。我最近做了一些.so构建并安装了很久以前的Clang,但是自从这两个事件都成功编译后,所以不确定发生了什么变化。我使用GUI软件管理器删除然后再次安装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
答案 0 :(得分:55)
在CentOS或Fedora上
yum install gcc-c++
答案 1 :(得分:52)
在debian / ubuntu上我通过重新安装build-essential
修复了这个问题:
sudo apt-get update
sudo apt-get install --reinstall build-essential
答案 2 :(得分:24)
这是因为gcc
调用许多其他可执行文件来完成输入的处理,并且cc1
不在包含的路径中。
在shell类型whereis cc1
上。如果找到cc1
,最好继续在gcc
目录中创建一个软链接;否则,cc1
未安装,您必须使用包管理器安装 gcc-c ++ 。
答案 3 :(得分:23)
错误消息告诉您,找不到构建时依赖关系,因此您需要 - 将适当的软件包安装到您的系统中(使用软件包管理器,从源代码构建或以其他方式构建)
什么是cc1
:
taken from this answer
sudo apt-get install --reinstall build-essential
是内部命令,它接受预处理的C语言文件并将它们转换为程序集。这是编译C的实际部分。对于C ++,有cc1plus,以及其他用于不同语言的内部命令。
RUN apk add build-base
如果您在 docker-alpine 环境中,请通过添加以下内容安装build-base
:
Dockerfile
到 <div id="checkDiv">
<span mdTooltipPosition="below" mdTooltip="CheckIn">
<md-icon svgIcon="play" style="color: #efefef;cursor: pointer;height: 15px;width: 15px;" (click)='openPause()' [hidden]='playDiv'></md-icon>
</span>
<span mdTooltipPosition="below" mdTooltip="pause">
<md-icon svgIcon="pause" style="color: #efefef;cursor: pointer;height: 15px;width: 15px;" *ngIf="playDiv" (click)='openPlay()' > </md-icon>
</span>
<span mdTooltipPosition="below" mdTooltip="resume">
<md-icon svgIcon="play" style="color: #efefef;cursor: pointer;height: 15px;width: 15px;" *ngIf="playDiv" [hidden]='playDiv' (click)='openPause()' ></md-icon>
</span>
<span mdTooltipPosition="below" mdTooltip="CheckOut">
<md-icon svgIcon="stop" style="color: #efefef;cursor: pointer;height: 15px;width: 15px;" *ngIf="playDiv" (click)='openPlay()'></md-icon>
</span>
。如果您需要更多包用于构建目的,请考虑添加alpine-sdk
包。
取自github
答案 4 :(得分:13)
Amazon Linux:修复GCC问题
由于这是Google上的第一个结果,我只想记录我在Amazon Linux上的体验。安装gcc-c++.noarch
解决了问题:
sudo yum install gcc-c++.noarch
有些人还报告了这种替代方案:
sudo yum install gcc72-c++
答案 5 :(得分:10)
我今天遇到了类似的问题 - 一个同事无法构建他的软件,但我可以构建它。当他运行gcc
时,找不到cc1
。
他的可执行路径看起来很合理,但我无法轻易复制失败的事实表明他的环境中存在某些原因。
最终,我们发现在他的环境中定义了GCC_EXEC_PREFIX
,这是罪魁祸首,在搜索gcc
时误导了cc1
。这是他的shell启动脚本的一部分,旨在解决对不再使用的SPARC / Solaris系统的限制。通过不设置此环境变量解决了该问题。
http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
答案 6 :(得分:9)
我通过显式安装g ++修复了这个问题:
sudo apt-get install g++
安装pandas时遇到Ubuntu 12.04的问题。 (谢谢perilbrain。)
答案 7 :(得分:6)
yum install gcc-c++
做了修复。
答案 8 :(得分:3)
确保未导出GCC_EXEC_PREFIX(env)
,并将PATH
导出到正确的工具链。
答案 9 :(得分:1)
对我有用的是使用llvm-gcc
代替:
ln -s $(which llvm-gcc) /usr/local/bin/gcc
答案 10 :(得分:1)
如果您尝试在64位操作系统上运行32位gcc二进制文件并且缺少32位glibc,则这也可能是显示的错误消息。根据这个readme:“对于64位系统,运行工具需要32位libc和libncurses。” 在这种情况下,路径没有问题,实际上找到了cc1,但reported as missing没有32位glibc。
答案 11 :(得分:1)
只是为了记录我对这个问题的麻烦,尽管它似乎只是其他答案的一个具体例子;作为一个相对新手,我觉得这可能会帮助别人。
解决方案:
我使用PATH='/usr/path/:$PATH'
在单个会话中将'/ usr / bin'添加到PATH的开头,一切都开始正常工作。
在确保它不会破坏我的常规工具链后,我使用gedit永久更新PATH。
说明:
我在Ubuntu 14.04LTS上安装了多个工具链,并且我经常使用几个工具链。当我尝试从命令行使用gcc时,我得到了OP描述的问题。 '/ usr / bin'位于PATH中,但它位于其他工具链位置之后。原来那些其他工具链的cc1与gcc不兼容。
答案 12 :(得分:1)
在RHEL 7上编译并安装了闪亮的新GCC(版本8.1)后,我很快就遇到了这种情况。最后,它最终成为权限问题;我的根本原因是罪魁祸首。我最终发现cc1
藏在/usr/local/libexec
中:
[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/gcc/x86_64-pc-linux-gnu/8.1.0/ | grep cc1
-rwxr-xr-x 1 root root 196481344 Jul 2 13:53 cc1
但是,通往该目录的目录的权限不允许我的标准用户帐户:
[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/
total 4
drwxr-x--- 3 root root 4096 Jul 2 13:53 gcc
[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/gcc/
total 4
drwxr-x--- 3 root root 4096 Jul 2 13:53 x86_64-pc-linux-gnu
[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/gcc/x86_64-pc-linux-gnu/
total 4
drwxr-x--- 4 root root 4096 Jul 2 13:53 8.1.0
快速递归chmod
来添加世界范围的读取/执行权限已立即修复:
[root@nacelle 8.1.0]# cd /usr/local/libexec
[root@nacelle lib]# ls -l | grep gcc
drwxr-x--- 3 root root 4096 Jul 2 13:53 gcc
[root@nacelle lib]# chmod -R o+rx gcc
[root@nacelle lib]# ls -l | grep gcc
drwxr-xr-x 3 root root 4096 Jul 2 13:53 gcc
现在gcc
可以在我要求cc1
进行编译时找到它!
答案 13 :(得分:0)
您可以通过运行此操作来解决此问题: 在Fedora上:
sudo dnf install redhat-rpm-config
答案 14 :(得分:0)
我在Fedora 27的一个相当全新的安装上遇到了这个问题。我尝试了所有其他建议或它们的等价物;安装各种软件包要么已经安装了#34;已经安装了#34;或安装了一些没有帮助的新东西。
已修复
# dnf remove gcc
# dnf install gcc gcc-c++
答案 15 :(得分:0)
在Scientific Linux 6上(类似于CentOS 6-- SL现在被CentOS取代,AIUI),我不得不使用我在https://stelfox.net/blog/2014/08/dependency-prelink-issues/建议的/usr/sbin/prelink -av -mR
在我这样做之前,当我尝试编译时,我得到了cc1错误gcc: error trying to exec 'cc1': execvp: No such file or directory
,并且gcc --version报告了4.2.2而不是4.4.7,尽管该版本是由yum报告的。
它可能相关也可能不相关,但系统在/ var
上的空间不足答案 16 :(得分:0)
只是补充@maxkoryukov关于阿尔卑斯山的答案。
在Alpine中,Debian的build-essential
等效于build-base
。实际上,上面提到的alpine-sdk
取决于build-base
。
/ # apk info -R build-base
build-base-0.5-r1 depends on:
binutils
file
gcc
g++
make
libc-dev
fortify-headers
/ # apk info -R alpine-sdk
alpine-sdk-1.0-r0 depends on:
abuild
build-base
git
答案 17 :(得分:0)
在此包装中(Ubuntu 19.04):
sudo apt install g++-6
答案 18 :(得分:0)
在我极少数情况下,open
宠坏了color wrapper
。通过禁用gcc
环境变量将cw
从其目录/usr/libexec/cw
中排除来解决。
答案 19 :(得分:0)
为什么会这样? 当您安装Linux的新副本时,gcc编译器将随其预装。它仅包含用于运行linux的文件和二进制文件(显然可以节省空间和时间)。
如何解决此错误? 您需要做的就是通过软件包管理器更新软件包,然后重新安装基本构建软件包。 在不同的内核上,命令可能会有所不同。
答案 20 :(得分:0)
记录在 Amazon Linux 2 上从源代码安装 gcc-10 的另一个错误来源。
运行 sudo make install
并测试 gcc-10
后,我收到此错误:
gcc-10: fatal error: cannot execute ‘cc1’: execvp: No such file or directory
原因是 /usr/local/
下的新 g++ 目录是由 sudo make install
创建的,具有 700
权限,因此非 root 用户无法看到目录内容。
我通过运行修复了它
sudo find /usr/local/ -type d -exec chmod 755 {} \;
请注意,我遵循了此代码段 https://gist.github.com/nchaigne/ad06bc867f911a3c0d32939f1e930a11