2

g ++を使用してubuntuでコンパイルしようとするたびに、次のエラーが発生します

g++ test.cpp -o test
/usr/bin/ld: 1: /usr/bin/ld: /bin: Permission denied
/usr/bin/ld: 2: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 3: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 4: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 5: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 6: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 7: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 8: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 9: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 10: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 11: /usr/bin/ld: test.cpp: not found
/usr/bin/ld: 12: /usr/bin/ld: Syntax error: "(" unexpected

g++ を何度も削除して再インストールしました。/usr/bin および /usr/bin/ld の chmod は 755 で、奇妙なことに、実行g++ -c test.cppできますが、.o ファイルを実行できません。何が問題なのか完全にはわかりません。

4

2 に答える 2

5

まず、.o ファイルは実行するためのものではなく、他のオブジェクト ファイル (.o) やライブラリ (特に C++ および C 標準ライブラリ) と一緒にリンクするためのものです。ただし、エラーメッセージから、これはおそらく機能しないと思います。

/binエラー メッセージから、おそらくディレクトリでこのコマンドを実行しているように聞こえます。これは不適切です。書き込みアクセス権のあるディレクトリ(ホームディレクトリなど)で実行する必要があります。さらに、test.cpp ファイルが見つからないというメッセージが表示されますcd。正しいディレクトリに移動したことは確かですか?

于 2012-10-10T00:38:30.080 に答える
0

まずg++ -c test.cpp、ソースコードをコンパイルまたはアセンブルするだけで、リンクはしません。最終的な出力はオブジェクトファイルです。あなたの場合は.oファイルです。.oファイルを実行することはできません。

上で述べたようg++ -c test.cppに、リンク部分を無視するだけなのでld使用されません。それがあなたのためにg++ -c test.cpp働く理由です。

rootユーザーに切り替えて、g++ test.cpp -o test再度実行できます。それが機能する場合は、/usr/binまたはに権限の問題がある可能性があります/usr/bin/ld

于 2012-10-10T05:42:01.440 に答える