gcc で C コードをコンパイルするとアクセスが拒否される

gcc で C コードをコンパイルするとアクセスが拒否される

私はCプログラムをコンパイルしましたgcc -c -o test.exe test.c が、エラーは発生しませんでした。実行すると、Access is denied.

これは私のコードです

#include <stdio.h>
int main()
{
    printf("Hello, World!");
    return 0;
}

答え1

-c @Scottなしで試してみましょう

答え2

バイナリ/オブジェクト/実行可能コードファイルには複数の種類があります。これらの名前がどの程度標準的であるかはわかりませんが、CS 11: C プログラムのコンパイル(Caltech では)「オブジェクト ファイル」と「バイナリ実行ファイル」について言及しています。簡単な (おそらく単純化しすぎた) 説明は、オブジェクト ファイルには単一のソース ファイルをコンパイルして生成された命令が含まれており、バイナリ実行ファイルは完全なプログラムを表すということです。(プログラミングの「Hello world」レベルを超えると、単一のプログラムを構築するために複数のソース コード ファイルを持つことが一般的です。) オブジェクト ファイルは、多かれ少なかれ定義上、不完全なプログラムなので実行できません。

でコンパイルすると、関数だけを-c含むオブジェクトファイルが作成されます。これには、main電話に含まれていますが、関数自体や、関数を検索/ロードする手段は printf含まれていません。完全なプログラムのバイナリ実行ファイルを取得するには、オプションを省略する必要があります。printf-c

関連情報