完整错误消息:
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 错误:
第一个问题是,由于我是交叉编译的,所以我需要首先在我的树莓派上安装 OpenSSL,然后将该库复制回我的电脑。
然后我必须获取 sysroot 文件夹的新副本(由于某种原因已损坏),并将我的 OpenSSL 放入其中。
然后出现其他错误,提示“找不到 crt1.0、crti.o、crtn.o 和 libdl.so.2:没有这样的文件或目录”:
为了解决这些问题,我必须在 sysroot 文件夹中创建符号链接,以指向这些文件来自编译器期望它们所在的位置。
现在我的项目可以编译了!