Недавно я начал исследовать способ использования библиотеки времени выполнения C ++ в сгенерированном коде.
В основном Я очень любопытный, -fno-builtin -fno-rtti -fno-exceptions -c main.cpp
Я получаю это предупреждение:
/ usr / bin / ld: warning: не удается найти символ входа _start; по умолчанию 00000000080480b8
Затем, когда я пытаюсь выполнить созданный двоичный файл, я получаю «Ошибка сегментации». Я попытался скомпилировать «main.cpp» и файл ASM.
[global _start]
[extern main]
_start:
call main
Связывая объектные файлы вручную с помощью «ld», у меня нет предупреждения, но двоичный файл все еще вызывает «Ошибка сегментации».
Полагаю, я что-то упускаю. Вероятно, что-то, что нужно сделать до и после вызова «main», как, например, делает системная библиотека C в «__libc_start_main».
Кроме того, если у кого-то есть какие-либо рекомендации веб-сайтов, документации или книг по этой теме, которые я должен прочитать, я был бы очень признателен.
Спасибо,
Патрик