2013-02-13 3 views
3

Я пытаюсь запустить следующий код в терминале на моем Mac:GCC запускает программу сборки mac?

.section, .data 

format_string: 
    .asciz "My favorite number is %d!" 

number: 
    .long 786 

.section, .text 
.globl main 

main: 
    pushl number 
pushl $format_string 
call printf 
    addl $8, %esp 

    pushl $0 
    call exit 

Этот код находится в файл с именем favorite.s

я использовал команду «НКА favorite -m32» и я вижу следующее сообщение:

Undefined symbols for architecture i386: 
    "_main", referenced from: 
     start in crt1.10.6.o 
    "exit", referenced from: 
     main in ccUKdD8O.o 
    "printf", referenced from: 
     main in ccUKdD8O.o 
ld: symbol(s) not found for architecture i386 
collect2: ld returned 1 exit status 

Что я здесь делаю неправильно? Благодарю.

ответ

5

Символы имеют подчеркивание предваряется их на Mac OS X. Добавить _ перед main, exit и printf в вашей программе и попробуйте еще раз!

+0

Добавив, что теперь я получаю вывод, в котором говорится: «Недопустимая инструкция: 4»:/ – zProgrammer

+0

Звучит как опечатка где-то. Можете ли вы показать свой обновленный код? –

+0

я попробовал более простую программу, и она производит то же сообщение: .section, .text .globl _main _main: # Пропустите один параметр для выхода. pushl $ 27 call _exit – zProgrammer

Смежные вопросы