まず、あなたは、オブジェクトファイルを作成しますがされていません実行可能ファイル。オブジェクトファイルは、実行ファイルを作成するリンカの入力ファイルとして使用される中間ファイルです。 .o
という接尾辞を付けて名前を付けても問題ありません。
第2に、出力ファイル名を-o
オプションで指定しないと、コンパイラのフロントエンドプログラムとリンカーはa.out
という名前の実行可能ファイルを作成します。
しかし、これはすべてではありません。第2の例では実際に実際のオブジェクトファイルを作成しており、実行可能ではないためです。上記のように、実行可能ファイルを作成するには、これらを別のリンクステップに渡す必要があります。
次のいずれかの実行可能ファイルを作成する必要があります:あなたが実行可能ファイルにオブジェクトファイルをリンクする必要があり
gcc test.c
./a.out
またはを:
gcc -c test.c # Create object file
gcc test.o -o test # Use object file to create executable file
./test # Run the executable file
オブジェクトファイルは機械命令ではありません。それは実行するつもりはありません。これはリンクされることを意図しています。 'gcc test.c -o test'を使うべきです。次に、 'test'という実行可能なファイルがあります。 –
'man ld'をよく見て、最終的なelf実行ファイルを作成する際にどのような目的があるのかを見て、下記のように答えを表示してください。 –
'gcc test.c -o test.o'の後に、' test.o'という名前の実行可能ファイルを作成しました。これはオブジェクトファイルではありません。 –