J'essaie d'apprendre l'assemblage en utilisant NASM, le pcasm-book.pdf du Dr Paul Carter - http://www.drpaulcarter.com/pcasm/ - sur mon Mac OS X Snow Leopard.Quel est le format de fichier utilisé par gcc dans OSX?
Je suis en train de relier l'échantillon précédent C compilé à des échantillons asm:
gcc first.o driver.c asm_io.o -o first
Mais il est le retourner:
driver.c:3: warning: ‘cdecl’ attribute ignored
ld: warning: in first.o, **file is not of required architecture**
ld: warning: in asm_io.o, file is not of required architecture
Undefined symbols:
"_asm_main", referenced from:
_main in ccjLqYJn.o
ld: symbol(s) not found
J'utilise le format Mach-o pour compiler asm échantillons, et je suis pas d'erreur:
nasm -f macho **first.asm**
nasm -f macho asm_io.asm
Si j'essaie d'utiliser gcc -c dans driver.c, en utilisant ld pour relier tous les fichiers objets, l d semble ne pas lier le format driver.o.
ld -o first asm_io.o first.o driver.o
Il retourne:
ld: warning: in driver.o, file is not of required architecture
Undefined symbols:
"_putchar", referenced from:
print_char in asm_io.o
print_nl in asm_io.o
"_printf", referenced from:
print_int in asm_io.o
print_string in asm_io.o
push_of in asm_io.o
sub_dump_stack in asm_io.o
stack_line_loop in asm_io.o
sub_dump_mem in asm_io.o
mem_outer_loop in asm_io.o
mem_hex_loop in asm_io.o
sub_dump_math in asm_io.o
tag_loop in asm_io.o
print_real in asm_io.o
invalid_st in asm_io.o
"_scanf", referenced from:
read_int in asm_io.o
"_getchar", referenced from:
read_char in asm_io.o
ld: symbol(s) not found for inferred architecture i386
Quel est le problème? Quel est le format correct pour travailler avec gcc et NASM sur OS X?
Merci. Daniel Koch
Merci. Gcc utilise x86_64 par défaut alors que le format "macho" de NASM est i386. –
@DanielKoch pourriez-vous poster ce qui a finalement fonctionné pour vous? Je reçois toujours des erreurs de compilation. – gideon
@gideon Vous devriez probablement poster une nouvelle question ou inclure un lien vers exactement les commandes que vous essayez et les erreurs que vous voyez. Ou décrivez ce que vous n'avez pas compris à propos de ma réponse, afin que je puisse l'améliorer. –