私はMacを使用しており、ターミナルでプログラムをコンパイルしています
gcc -Wall -g -o example example.c
コンパイルされます(エラーはありません)が、コマンドライン引数を指定しようとすると
example 5 hello how are you
端末は「-bash: example: command not found」で応答します
コンパイル後に提供したい引数をどのように提供すればよいですか?
パスを指定して次のように実行します。
./example 5 hello how are you
バイナリが PATH 変数の一部であるディレクトリでない限り、example
実行中のバイナリが現在のディレクトリにある場合でも、機能しません。
これはコンパイルの問題ではなく、シェルの問題です。現在のディレクトリはあなたのものではありませんPATH
( シェルが特定のプログラムでどのようにecho $PATH
使用するかを調べるには、 を参照して使用します)。which
which gcc
次のようなプログラムの明示的なファイルパスを使用してプログラムをテストすることをお勧めします
./example 5 hello how are you
の最後~/.bashrc
に追加するように編集することもできます。長所と短所があります (特に、現在のディレクトリがたまたま「悪意のある」ディレクトリである場合、セキュリティ上の問題が発生する可能性があります。あなたの場合)。.
PATH
/tmp
gcc
/bin/rm
.
PATH
デバッガー ( など) の使用方法を学ぶことを忘れないでくださいgdb
。このスキルは、C (または C++) でコーディングする場合に不可欠です。おそらく、アップグレードも検討してくださいgcc
(Apple は現在の GPLv3 ライセンスをあまり好まないので、最近のライセンスを配布しないでください。 最新のリリースされた GCCは現在 4.8.1gcc -v
であることに注意してください)。
./example 5 Hello how are you
探している構文です。
この記事は、これが重要である理由をよく説明しています。
基本的に、 を押すEnter
と、シェルは最初の文字セットが絶対パスかどうかを確認します。そうでない場合は、変数をチェックして、PATH
実行しようとしているコマンドの名前を持つ実行可能ファイルを見つけます。見つかった場合は実行されますが、そうでない場合はクラッシュして燃え、非常に悲しくなります。