完全なエラーメッセージ:
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
おそらくそれはリンカーの問題ですか?
私が気づいたことの1つは、/ usr/local/libexecまたは/ usr/libexecディレクトリがないことですが、これが問題であるのか、それが何を意味するのかはわかりません。
問題を修正しました!
Cc1plusエラーを修正するには:
最初の問題は、私がクロスコンパイルしているので、最初にOpenSSLをRaspberry Piにインストールしてから、そのライブラリを自分のPCにコピーする必要があったことです。
次に、sysrootフォルダーの新しいコピー(何らかの理由で破損している)を取得し、その中にOpenSSLを配置する必要がありました。
次に、「crt1.0、crti.o、crtn.o、およびlibdl.so.2が見つかりません:そのようなファイルまたはディレクトリはありません」という追加のエラーが表示されました。
これらを修正するために、コンパイラーが期待する場所からこれらのファイルがある場所を指すように、sysrootフォルダーにシンボリックリンクを作成する必要がありました。
そして今私のプロジェクトはコンパイルされます!