Gcc 오류 : gcc : 'cc1'exec 시도 오류 : execvp : 해당 파일 또는 디렉토리가 없습니다.


102

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

답변:


70

설명

오류 메시지는 빌드 시간 종속성 (이 경우 cc1)이 발견되지 않았으므로 필요한 모든 것입니다. 적절한 패키지를 시스템에 설치합니다 (소스에서 // 다른 방법으로 패키지 관리자 사용).

무엇입니까 cc1:

cc1전처리 된 C 언어 파일을 가져와 어셈블리로 변환하는 내부 명령입니다. C를 컴파일하는 실제 부분입니다. C ++의 경우 cc1plus 및 다른 언어에 대한 기타 내부 명령이 있습니다.

이 답변에서 가져온 에 의해 앨런 Shutko 씨 .

솔루션 : Ubuntu / Linux Mint

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

솔루션 : Docker-alpine 환경

docker-alpine 환경에 있는 경우 다음 을 추가 하여 빌드 기반 패키지를 설치 합니다 Dockerfile.

RUN apk add build-base

Pablo Castellano가 제공 한 더 나은 패키지 이름 . 자세한 내용은 여기를 참조하세요 .

빌드 목적으로 더 많은 패키지가 필요한 경우 alpine-sdk 패키지 추가를 고려하십시오 .

RUN apk add alpine-sdk

github 에서 가져옴

솔루션 : CentOS / Fedora

이 답변 에는 CentOS 및 Fedora Linux에 대한 지침 포함되어 있습니다.

솔루션 : Amazon Linux

sudo yum install gcc72-c++

에서 촬영 이 댓글CoderChris

이 방법으로 누락 된 종속성을 설치하려고 할 수도 있습니다 ( 하지만 문제를 해결하지 않는다고합니다 ).

sudo yum install gcc-c++.noarch

이 답변 에서 가져온



63

데비안 / 우분투에서 다음을 다시 설치하여이 문제를 해결했습니다 build-essential.

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

1
´--reinstall build-essential´에 대한 로그에서 내 우분투는 "Setting up g ++ (4 : 6.1.1-1ubuntu2) ... update-alternatives : / usr / bin / g ++를 사용하여 / usr / bin 제공 / c ++ (c ++) in auto mode "
Paamand

이것은 Debian DigitalOcean.com droplet에서 나를 고쳤습니다. .cpp 파일로 완벽하게 컴파일 된 gcc 이후에 표시된 두 번째 명령 만 실행하면됩니다.
raddevus

1
@mchid 잘못된 것이 없습니다-문제가 해결되었습니다. 문제와 관련된 제안 사항을 명확히하고 싶었습니다. 예를 들어 귀하의 답변이 누군가에게 효과가 없다면 gcc에 대한 업데이트 대안을 사용할 수 있습니다.
Paamand

26

이는 gcc입력 처리를 완료하기 위해 다른 많은 실행 파일을 호출 cc1하고 포함 된 경로에 없기 때문입니다.

쉘 유형 whereis cc1. 경우 cc1발견, 더 나은 가서의 디렉토리에 소프트 링크를 만들 것 gcc; 그렇지 않으면 cc1이 설치되어 있지 않으며 패키지 관리자를 사용하여 gcc-c ++ 를 설치해야합니다 .


2
답장을 보내 주셔서 감사합니다. cc1은 아무것도 반환하지 않습니다. 소프트웨어 관리자에 따라 gcc 및 gcc-4.4, gcc-4-6, libgcc1이 설치되어 있습니다. g ++를 설치했지만 여전히 오류가 발생합니다.
Scooter

2
볼 수있는 실행 파일은 현재의 / usr / 지방 / libexec 디렉토리 / GCC / <아키텍처> / <컴파일러> / <compiler_version> / CC1, 그렇지 않으면 일시 사용을위한 탐색를 / usr / 빈이고로 링크를 작성하는 경우ln -s cc cc1
perilbrain

/ usr / local / libexec 디렉토리가 없습니다. / usr / local 아래에 "gcc"가 없습니다.
Scooter

1
GCC는 / usr / bin 아래에 있으며 여기에서도 cc가됩니다.이 디렉토리의 이전 주석에서 언급 한 명령을 실행합니다.
perilbrain

2
cc1 / cc1plus 바이너리는 $ PATH에 없어야합니다.
zwol

16

Amazon Linux : GCC 문제 수정

이것이 Google의 첫 번째 결과이므로 Amazon Linux에 대한 경험을 문서화하고 싶었습니다. 설치 gcc-c++.noarch하면 문제가 해결되었습니다.

sudo yum install gcc-c++.noarch

일부 사람들은이 대안을 해결책으로보고했습니다.

sudo yum install gcc72-c++


2
아마존 리눅스에 대한 내 문제는 분명히 .noarch이미 설치되어 있습니다.
ragerdl

10
sudo는 냠 설치 gcc72-C ++는 아마존 리눅스에 나를 위해 그것을 분류
CoderChris

다행 누군가의 아마존 리눅스에 대해 이야기하지만, 둘 다 이러한 솔루션으로는 ... 나를 위해 일한
요한 크리 소스 토모에게

1
"Amazon Linux AMI 2018.03"에서 yum install gcc72-c ++도 필요했습니다.
Nick Lothian

1
sudo yum install gcc72-c ++는 나를 위해 작동합니다. 고마워요
Ilyas

13

오늘도 비슷한 문제가 발생했습니다. 동료가 자신의 소프트웨어를 빌드 할 수는 없었지만 빌드 할 수있었습니다. 그가 달렸을 때 gcc그것은 찾을 수 없습니다 cc1.

그의 실행 경로는 합리적으로 보였지만 실패를 쉽게 복제 할 수 없다는 사실은 그의 환경에서 원인으로 무언가를 암시했습니다.

결국 우리는 발견 GCC_EXEC_PREFIX범인이었다 자신의 환경에 정의와 오해의 소지가되었다 gcc에 대한 검색에 cc1. 이것은 그의 쉘 시작 스크립트의 일부였으며 더 이상 사용되지 않는 SPARC / Solaris 시스템의 제한 사항을 해결하기위한 것입니다. 이 환경 변수를 설정하지 않으면 문제가 해결되었습니다.

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


똑같은 문제 .. 아직 해결되지 않았습니다! 이것은 프로젝트를 16.04LTS에서 18.04LTS로 이식 한 후에 발생했습니다.
Shaze

11

g ++를 명시 적으로 설치하여이 문제를 해결했습니다.

sudo apt-get install g++

Pandas를 설치하는 동안 Ubuntu 12.04에서 문제가 발생했습니다. (위험 해 감사합니다.)


5

yum install gcc-c++ 수정했습니다.


1
기존 답변의 중복 (현재 가장 많이 득표 한 답변,이 답변 1 년 전에 게시 됨). "감사합니다"또는 "저도"대답은 어수선합니다.
Peter Cordes

4

GCC_EXEC_PREFIX(env)내 보내지 않았는지 확인 PATH하고 올바른 도구 체인으로 내 보내야합니다.


2

나는 RHEL 7에서 새로운 GCC (버전 8.1)를 컴파일하고 설치 한 직후에 이것을 경험했습니다. 결국 권한 문제가되었습니다. 내 루트 umask가 범인이었습니다. 나는 결국 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!


1

64 비트 OS에서 32 비트 gcc 바이너리를 실행하려고하고 32 비트 glibc가 누락 된 경우에도 표시되는 오류 메시지 일 수 있습니다. readme 에 따르면 "64 비트 시스템의 경우 도구를 실행하려면 32 비트 libc 및 libncurses가 필요합니다." 이 경우 경로에 문제가없고 cc1이 실제로 발견되지만 32 비트 glibc가없는 것으로보고됩니다 .


1

나를 위해 도움이 된 것은 llvm-gcc대신 사용하는 것이 었습니다 .

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

1

다른 답변의 특정 예인 것처럼 보이지만이 문제에 대한 내 문제를 문서화하기 위해; 상대적인 초보자로서 나는 이것이 다른 사람들에게 도움이 될 것이라고 생각합니다.

해결책:

단일 세션에 대해 PATH 시작 부분에 '/ usr / bin'을 추가 PATH='/usr/path/:$PATH'했으며 모든 것이 잘 작동하기 시작했습니다.

나는 gedit를 사용하여 PATH를 영구적으로 업데이트 한 후 일반 툴체인을 깨지 않도록했습니다.

설명:

Ubuntu 14.04LTS에 여러 도구 체인이 설치되어 있으며 정기적으로 몇 개만 사용합니다. 명령 줄에서 gcc를 사용하려고 할 때 OP에서 설명하는 문제가 발생했습니다. '/ usr / bin'은 PATH에 있지만 다른 도구 모음 위치 뒤에 있습니다. 다른 툴체인의 cc1은 gcc와 호환되지 않습니다.


1

Alpine에 관한 @maxkoryukov의 대답을 보완하기 위해.

build-essentialAlpine 의 Debian에 해당하는 것은 build-base. 실제로 위에서 언급 한 내용 alpine-sdkbuild-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

0

다음을 실행하여 수정할 수 있습니다. Fedora에서 :

sudo dnf install redhat-rpm-config

0

Fedora 27을 새로 설치했을 때이 문제가 발생했습니다. 다른 모든 제안이나 이에 상응하는 방법을 시도했습니다. 다양한 패키지를 설치하는 것은 "이미 설치됨"이라고 말했거나 도움이되지 않는 새로운 것을 설치했습니다.

고정

# dnf remove gcc
# dnf install gcc gcc-c++

0

Scientific Linux 6 (CentOS 6과 유사 --SL은 이제 CentOS, AIUI로 대체 됨) /usr/sbin/prelink -av -mR에서 https://stelfox.net/blog/2014/08/dependency-prelink-issues/ 에서 제안한 것을 사용해야 했습니다.

그렇게 할 때까지 gcc: error trying to exec 'cc1': execvp: No such file or directory컴파일을 시도 할 때 cc1 오류가 발생 했고 gcc --version은 yum에서 해당 버전을보고 했음에도 불구하고 4.4.7 대신 4.2.2를보고했습니다.

관련이있을 수도 있고 아닐 수도 있지만 시스템에 / var의 공간이 부족했습니다.


0

이 패키지 (Ubuntu 19.04)에 있습니다.

  sudo apt install g++-6

이전 G ++ 버전을 설치할 필요가 없습니다. 다만 g++괜찮습니다. 또는 더 나은, build-essential일부 libs도 가져옵니다.
Peter Cordes

0

내 드문 경우에 color wrapper누가 버릇을했는지 gcc. 환경 변수 에서 cw디렉토리 제외 를 비활성화하여 해결되었습니다 ./usr/libexec/cwPATH


0

왜 이런 일이 발생합니까? Linux의 새 복사본을 설치할 때 gcc 컴파일러가 함께 제공됩니다. Linux를 실행하는 데 사용되는 파일과 바이너리 만 포함되어 있습니다 (분명히 공간과 시간을 절약하기 위해).

이 오류를 해결하는 방법은 무엇입니까? 패키지 관리자를 통해 패키지를 업데이트하고 빌드 필수 패키지를 다시 설치하기 만하면됩니다. 명령은 커널마다 다를 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.