G++/GCC를 설치했지만 여전히: 'cc1plus'를 실행하는 동안 오류가 발생했습니다: execvp: 해당 파일이나 디렉터리가 없습니다

G++/GCC를 설치했지만 여전히: 'cc1plus'를 실행하는 동안 오류가 발생했습니다: execvp: 해당 파일이나 디렉터리가 없습니다

전체 오류 메시지:
arm-linux-gnueabihf-g++: 'cc1plus'를 실행하는 동안 오류가 발생했습니다. execvp: 해당 파일 또는 디렉터리가 없습니다.

따라서 Ubuntu 18.04에서 홈 디렉터리를 삭제하고 복원한 직후 컴퓨터에서 C++ 프로젝트를 빌드하려고 할 때 이 오류 메시지가 표시되었습니다. 나는 이것이 내 환경의 문제 때문이라고 생각합니다. 왜냐하면 나는 얼마 전에 동일한 설정으로 내 프로그램을 만들었기 때문입니다. 이 오류를 조사한 후, 거의 모든 사람들이 내가 gcc/g++를 설치하지 않았거나, gcc/g++를 잘못 설치했거나, gcc/g++ 사이에 버전 불일치가 있었기 때문에 발생했다고 말하는 것을 발견했습니다.

하지만 이건 내 문제가 아닌 것 같습니다.

jayz@joshz:/usr$ gcc --version
gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

jayz@joshz:/usr$ g++ --version
g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

또한 gcc와 g++를 다시 설치해 보았지만 여전히 같은 오류가 발생했습니다.

나는 또한 다음을 시도했습니다.

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

실제로 내 시스템의 여러 위치에서 cc1plus 파일을 찾았습니다.

jayz@joshz:/usr$ locate cc1plus
/home/jayz/raspi/sysroot/usr/lib/gcc/arm-linux-gnueabihf/4.9/cc1plus
/home/jayz/raspi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/libexec/gcc/arm-bcm2708-linux-gnueabi/4.7.1/cc1plus
/home/jayz/raspi/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/libexec/gcc/arm-bcm2708hardfp-linux-gnueabi/4.7.1/cc1plus
/home/jayz/raspi/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/libexec/gcc/arm-linux-gnueabihf/4.9.3/cc1plus
/home/jayz/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/libexec/gcc/arm-linux-gnueabihf/4.8.3/cc1plus
/home/jayz/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/libexec/gcc/arm-linux-gnueabihf/4.8.3/cc1plus
/usr/lib/gcc/x86_64-linux-gnu/7/cc1plus

그렇다면 링커 문제일까요?

내가 알아차린 한 가지는 /usr/local/libexec 또는 /usr/libexec 디렉토리가 없다는 것입니다. 그러나 이것이 문제인지 또는 그것이 무엇을 의미하는지 잘 모르겠습니다.

답변1

문제를 해결했습니다!

cc1plus 오류를 수정하려면:

첫 번째 문제는 크로스 컴파일을 하기 때문에 먼저 Raspberry Pi에 OpenSSL을 설치한 다음 라이브러리를 다시 내 컴퓨터에 복사해야 한다는 것입니다.

그런 다음 sysroot 폴더(어떤 이유로 인해 손상됨)의 새 복사본을 가져와서 여기에 OpenSSL을 넣어야 했습니다.

그런 다음 "crt1.0, crti.o, crtn.o 및 libdl.so.2를 찾을 수 없습니다. 해당 파일이나 디렉터리가 없습니다"라는 다른 오류가 나타납니다.

이러한 문제를 해결하려면 sysroot 폴더에 심볼릭 링크를 만들어 컴파일러가 예상하는 파일의 출처를 가리켜야 했습니다.

이제 내 프로젝트가 컴파일됩니다!

관련 정보