Я пытаюсь встроить hello.asm в исполняемый файл Windows, но когда я использую предложенные команды для сборки, компоновки и компиляции кода, я получаю ошибки. Независимо от того, использую ли я GCC Strawberry Perl или GCC MinGW, оба выдают ошибки для одного и того же кода YASM / NASM.
Вот следы. Либо я делаю что-то не так в моем Makefile или .ASM, либо в процессе компоновки есть ошибки. В любом случае, мне бы хотелось, чтобы кто-нибудь помог мне исправить ошибки.
Я получаю один и тот же результат независимо от того, использую ли я nasm или yasm для сборки объектного файла.
След Strawberry 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
- Клубничный Perl gcc 4.4.3
- MinGW gcc 4.5.2
- Клубничный Perl 5.12
- MinGW 0,1
- Windows 7 Профессиональная x64
- MacBook Pro 2009 г.
ld
илиgcc
для ссылки; GCC более многоплатформенный, доступен для Windows через установщик MinGW. - person mcandre   schedule 20.09.2012push
,pop
,add
,lea
,mov
,call
и т. Д. Просто совпадают для двух ОС, и вы используете многоплатформенную библиотеку, но, например, если вы попытаетесь открыть гнездо для CD-ROM, вам придется использовать разные функции, библиотеки, прерывания и т. д. - person Toribio   schedule 20.09.2012