WindowsからUbuntu 11.10に切り替えました。
テキストエディターを使用してCで次のコードを記述し、DocumentsにHelloWorld.cとして保存しました。
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
そして、ターミナルを起動して、次のコマンドを入力します。
cd Documents
gcc HelloWorld.c
Googleで検索した後、実行可能ファイルであるa.outと呼ばれるファイル。次のコマンドを入力しました:
a.out
しかし、私は得る
a.out: command not found
どのステップを間違ってしましたか?
現在の作業ディレクトリで実行可能ファイルを実行しているため、./
というプレフィックスを付ける必要があります。したがって、プログラムでは./a.out
として実行します。
端末は、$PATH
で実行可能ファイルを検索します。これはUnix 環境変数 で、システムバイナリを含むディレクトリを一覧表示します(ls
、echo
、_gcc
など)。 $PATH
ディレクトリ(a.out
など)でnotではない実行可能ファイルを呼び出す場合、その絶対パスを指定する必要があります。ファイルシステム内。
端末では.
は現在の作業ディレクトリの同義語であるため、./a.out
です。 /home/yihang/Documents/a.out
も同様に呼び出すことができます。
Linuxでコマンドを実行すると、PATH
環境変数にリストされているすべてのディレクトリが検索され、そこでコマンドが見つからない場合は、表示されたメッセージが表示されます。
通常、次のようになります。
PATH=/usr/local/bin:/usr/bin:/bin
つまり、/usr/local/bin
で最初に表示されます。見つからない場合は、/usr/bin
などを検索します。
実際、これはDOS/Windowsでも非常によく似ています:%PATH%
という変数があり、まったく同じことを行います。
differenceは、Windowsでは現在のディレクトリも検索されることです。 Unixは、ローカルファイル(マルウェアなど)が重要なシステムプログラムを誤って上書きする可能性があるため、これを悪いと見なします。
ただし、それを好む場合は、パスに.
を追加することにより、Linuxを同じように動作させることができます。
PATH=.:$PATH
(つまり、PATH
を.:
に設定し、さらに$PATH
の既存のコンテンツを設定します。)
最終的には次のようになります(マシンによって異なる場合があります)。
PATH=.:/usr/local/bin:/usr/bin:/bin
そうしたくない場合は、ディレクトリを明示的に指定して各プログラムを実行するだけです。
./myprog
または
/home/username/myprog
基本的に、実行可能ファイルの名前を指定しなかったため、デフォルトでa.outが作成されます。代わりにこれを試してください:
gcc HelloWorld.c -o HelloWorld
これを行うと、「HelloWorld」の前にドットスラッシュ(./)を付けることで(Sunilが提案したように)呼び出すことができるはずです。
./HelloWorld
A.outが作成される理由について少し説明している記事へのリンクを次に示します。 LinuxでのCプログラムの作成とコンパイル 。