問題
gfortranでモジュールファイルのみコンパイルするとき。
コンパイル時に以下のエラーメッセージが現れる。
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):
in function `main':
C:/crossdev/src/mingw-w64-v8-git/mingw-w64-crt/crt/crt0_c.c:18: undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status
原因
このエラーは、リンカがmain関数を見つけられない場合に発生する
https://stackfinder.jp.net/questions/5259714/undefined-reference-to-winmain16
(至極当たり前だが)モジュールのみコンパイルした場合はmain関数を見つけられない
解決方法
解決策1. コンパイル文にmainプログラムを含める
(1行でmainプログラムまでコンパイルする)
解決策2. gfortranのコンパイルオプションに -c
を加える
(コンパイル、アセンブルを行う。リンクは行わない)