简体   繁体   中英

Compile assembler in nasm on mac os

So, i write some instruction on asm, and compile them.

nasm -f macho test.asm

Now, nasm generate obj file, test.o

gcc test.o 

Returned next error:

  • ld: warning: ignoring file test.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
  • Undefined symbols for architecture x86_64: "_main", referenced from:
  • start in crt1.10.6.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status

in gcc line, i used -arch i386 (x86_64), returned same error.

Can anybody help? :)

These commands work for me (OS X 10.12 x64):

nasm -f macho test.asm -DDARWIN
ld -o test test.o -arch i386 -lc -no_pie -macosx_version_min 10.12 -lSystem

macho is a 32 bit format.
Try to use macho64 instead of macho . Complete line:

nasm -f macho64 test.asm

Try to update your nasm version and use the following command:

/usr/local/bin/nasm -f macho64 ${file}
ld  -o ${file_path}/${file_base_name} -e _main ${file_path}/${file_base_name}.o
${file_path}/${file_base_name}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM