Я пытаюсь следовать упражнению в книге «Сборка ПК» Пола Картера. http://pacman128.github.io/pcasm/
Я пытаюсь запустить программу с 1.4 стр. 23 в Ubuntu 18. Все файлы доступны на сайте github выше.
Поскольку исходный код для 32-битного кода, я компилирую, используя
nasm -f elf32
для first.asm и asm_io.asm для получения объектных файлов. Я также компилирую driver.c
Я использую компоновщик из gcc и запускаю
gcc -m32 -o first first.o asm_io.o driver.o
но он продолжает выдавать мне кучу ошибок вроде
неопределенная ссылка на _scanf
неопределенная ссылка на '_printf'
(обратите внимание, что вместо printf появляется _printf, потому что в файле asm_io.asm выполняется некоторое преобразование для обеспечения совместимости между Windows и ОС Linux)
Я не знаю, почему появляются эти ошибки. Я также пытаюсь запустить с использованием компоновщика напрямую
ld -m elf_i386 -e main -o first -first.o driver.o asm_io.o -I /lib/i386-linux-gnu/ld-linux.so.2
и много вариаций, поскольку кажется, что он не связан с библиотеками Си.
Любая помощь? Застрял на некоторое время и не смог найти решение по схожим вопросам