0

私はMacを使用しており、ターミナルでプログラムをコンパイルしています

    gcc -Wall -g -o example example.c

コンパイルされます(エラーはありません)が、コマンドライン引数を指定しようとすると

   example 5 hello how are you

端末は「-bash: example: command not found」で応答します

コンパイル後に提供したい引数をどのように提供すればよいですか?

4

3 に答える 3

5

パスを指定して次のように実行します。

   ./example 5 hello how are you

バイナリが PATH 変数の一部であるディレクトリでない限り、example実行中のバイナリが現在のディレクトリにある場合でも、機能しません。

于 2013-10-01T17:55:01.573 に答える
4

これはコンパイルの問題ではなく、シェルの問題です。現在のディレクトリはあなたのものではありませんPATH( シェルが特定のプログラムでどのようにecho $PATH使用するかを調べるには、 を参照して使用します)。whichwhich gcc

次のようなプログラムの明示的なファイルパスを使用してプログラムをテストすることをお勧めします

./example 5 hello how are you

の最後~/.bashrcに追加するように編集することもできます。長所と短所があります (特に、現在のディレクトリがたまたま「悪意のある」ディレクトリである場合、セキュリティ上の問題が発生する可能性があります。あなたの場合)。.PATH/tmpgcc/bin/rm.PATH

デバッガー ( など) の使用方法を学ぶことを忘れないでくださいgdb。このスキルは、C (または C++) でコーディングする場合に不可欠です。おそらく、アップグレードも検討してくださいgcc (Apple は現在の GPLv3 ライセンスをあまり好まないので、最近のライセンスを配布しないでください。 最新のリリースされた GCCは現在 4.8.1gcc -vであることに注意してください)。

于 2013-10-01T17:55:56.280 に答える
1

./example 5 Hello how are you探している構文です。

この記事は、これが重要である理由をよく説明しています。

基本的に、 を押すEnterと、シェルは最初の文字セットが絶対パスかどうかを確認します。そうでない場合は、変数をチェックして、PATH実行しようとしているコマンドの名前を持つ実行可能ファイルを見つけます。見つかった場合は実行されますが、そうでない場合はクラッシュして燃え、非常に悲しくなります。

于 2013-10-01T17:56:42.347 に答える