Ответ 1
Вы не связывали ни одну из необходимых библиотек поддержки. C глобальные объекты, такие как stdin, stdout, stderr, не просто появляются из ниоткуда. Аргументы команды и переменные среды вытягиваются из операционной системы. И при выходе все эти функции atexit()
вызываются, а код возврата из main
передается в exit(return_code)
. Etc.
Проверьте команды gcc -dumpspecs
, gcc -print-libgcc-file-name
. Посмотрите на все другие библиотеки этого каталога. Вы найдете много таких библиотек и объектных файлов, на которые ссылается вывод dumpspecs. Я не знаю точно, когда и как эти правила спецификации интерпретируются, но вы, вероятно, можете получить эту идею. И я думаю, что информационные страницы GCC info gcc
объясняют это подробно, если вы копаете достаточно далеко.
info gcc
, а затем нажмите 'g', а затем введите "Spec Files"
И как сказал Джонатан Леффлер, ярлык должен запустить gcc с подробным вариантом: gcc -v
и просто посмотреть, какие команды он использовал.