hello.asmを Windows 実行可能ファイルにビルドしようとしていますが、推奨されるコマンドを使用してコードをアセンブル、リンク、およびコンパイルすると、エラーが発生します。Strawberry Perlの GCCを使用しているかMinGWの GCC を使用しているかにかかわらず、どちらも同じ YASM/NASM コードに対してエラーを返します。
ここに痕跡があります。Makefile または .ASM で何か間違ったことを行っているか、リンク プロセスにバグがあります。いずれにせよ、誰かにエラーの解決を手伝ってもらいたいです。
nasm と yasm のどちらを使用してオブジェクト ファイルをアセンブルしても、同じ結果が得られます。
ストロベリー Perl GCC トレース:
C:\> make
nasm -f win32 -l hello.lst hello.asm
gcc -o hello hello.o
ld: cannot find crt1.o: No such file or directory
ld: cannot find -lmingw32
ld: cannot find -lgcc
ld: cannot find -lmoldname
ld: cannot find -lcrtdll
ld: cannot find -luser32
ld: cannot find -lkernel32
ld: cannot find -ladvapi32
ld: cannot find -lshell32
ld: cannot find -lmingw32
ld: cannot find -lgcc
ld: cannot find -lmoldname
ld: cannot find -lcrtdll
make: *** [hello] Error 1
MinGW GCC トレース:
$ make
gcc -o hello hello.o
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'
collect2: ld returned 1 exit status
make: *** [hello] Error 1
仕様:
- YASM 1.2.0
- NASM 2.10.05
- ストロベリーパール gcc 4.4.3
- MinGW gcc 4.5.2
- ストロベリーパール5.12
- MinGW 0.1
- Windows 7 プロフェッショナル x64
- MacBook Pro 2009