リンカーはld
、PE ファイルをリンクするときにエントリ ポイントとして使用するいくつかのシンボルのいずれかに一致するものを探します。
entry point subsystem
--------------------- --------------
NtProcessStartup native
WinMainCRTStartup Windows GUI
mainCRTStartup Windows CUI (console)
__PosixProcessStartup POSIX CUI
WinMainCRTStartup WinCE GUI
mainCRTStartup Xbox
mainCRTStartup other
DllMainCRTStartup@12 (or possibly DllMainCRTStartup) for DLLs
MinGW には、実際の PE エントリ ポイントを持つオブジェクト ファイルが自動的にリンクされます。-v
- gcc のオプションを使用して、どのオブジェクト ファイルが自動的にリンクされているかを確認できます。
コンソール サブシステムの「hello world」プログラムを構築する MinGW 4.6.1 を使用した簡単なテストでは、エントリ ポイントを含むオブジェクト ファイルがあり、エントリ ポイントとしてリンカによって選択されるcrt2.o
シンボルが含まれています。mainCRTStartup
エントリポイント コードを含むソース ファイルはcrtexe.c
(またはcrtdll.c
) です。
--entry
リンカーのオプションを使用してエントリ ポイントをオーバーライドできます( Wl,--entry=whatever
gcc コマンド ラインで使用する場合)。