Я смотрю видео в попытке лучше понять объектные файлы.В качестве примера программы, которая создает очень простой объектный файл, докладчик использует следующее:
extern "C" void _start() {
asm("mov $60, %eax\n"
"mov $24567837, %edi\n"
"syscall\n");
}
Программа скомпилирована с помощью
clang++ -c step0.cpp -O1 -o step0.o
и связана с помощью
ld -static step0.o -o step0
Я получаю это сообщение об ошибке при попытке связать:
Undefined symbols for architecture x86_64:
"start", referenced from:
-u command line option
(maybe you meant: __start)
ld: symbol(s) not found for inferred architecture x86_64
Я не передаю опцию командной строки -u, поэтому я не уверен, почему я получаю это сообщение об ошибке.