141

Linux Mint 12 で gcc を正常に使用していますが、エラーが発生しています。最近、いくつかの .so ビルドを行って Clang をインストールしましたが、それほど前ではありませんでしたが、これらの両方のイベント以降、正常にコンパイルされたため、何が変更されたのかわかりません。GUI Software Manager を使用して 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
4

25 に答える 25

66

debian / ubuntuでは、再インストールしてこの問題を修正しましたbuild-essential

sudo apt-get update
sudo apt-get install --reinstall build-essential
于 2016-08-03T03:33:38.657 に答える
29

これは、gcc他の多くの実行可能ファイルを呼び出して入力の処理を完了cc1し、含まれているパスにないためです。

シェルタイプについてwhereis cc1。見つかった場合は、先に進んで;cc1のディレクトリにソフトリンクを作成することをお勧めします。gccそれ以外の場合cc1はインストールされず、パッケージマネージャーを使用してgcc-c++をインストールする必要があります。

于 2012-08-11T07:40:13.610 に答える
13

私は今日同様の問題に遭遇しました-同僚は彼のソフトウェアを構築できませんでしたが、私はそれを構築することができました。彼が走ったとき、gccそれは見つけることができませんcc1でした。

彼の実行可能パスは妥当に見えましたが、失敗を簡単に再現できなかったという事実は、彼の環境に原因として何かを示唆していました。

最終的GCC_EXEC_PREFIXに、犯人でありgcc、の検索で誤解を招くような彼の環境で定義されていることがわかりましたcc1。これは彼のシェル起動スクリプトの一部であり、使用されなくなったSPARC/Solarisシステムの制限を回避することを目的としていました。この環境変数を設定しないことで問題は解決しました。

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

于 2013-03-07T04:07:43.050 に答える
4

GCC_EXEC_PREFIX(env)エクスポートされていないことと、PATH正しいツール チェーンにエクスポートされていることを確認してください。

于 2013-03-31T21:07:45.953 に答える
3

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

于 2018-07-06T21:53:40.233 に答える
1

これは、32 ビット glibc が見つからない 64 ビット OS で 32 ビット gcc バイナリを実行しようとした場合にも、表示されるエラー メッセージである可能性があります。このreadmeによると、「64 ビット システムの場合、ツールを実行するには 32 ビットの libc と libncurses が必要です。」. この場合、パスに問題はなく、実際には cc1 が見つかりますが、32 ビット glibc がないと報告されています。

于 2016-02-29T12:56:45.447 に答える
1

Fedora 27 の比較的新しいインストールでこの問題を経験しました。他のすべての提案または同等のものを試しました。さまざまなパッケージをインストールすると、「既にインストールされています」と表示されるか、何か新しいものをインストールしましたが、役に立ちませんでした。

で固定

# dnf remove gcc
# dnf install gcc gcc-c++
于 2018-01-24T22:17:21.823 に答える
1

私にとって役に立ったのは、llvm-gcc代わりに使用することでした:

ln -s $(which llvm-gcc) /usr/local/bin/gcc
于 2016-07-29T17:20:56.237 に答える
0

私のまれなケースですが、PATH変数が設定されていましたが、エクスポートされていませんでした。単に PATH 変数をエクスポートするだけで、この問題は解決されました。

于 2021-08-20T20:24:00.020 に答える