Я новичок в C и линковке, просто интересно, как работает линкер. Давайте поговорим о стандартной библиотеке C "libc.a", у меня есть пара вопросов;
Q1. Сохраняется ли эта библиотека на диске, загружается ли в память и частично ли копируется (скажем, используется только printf, поэтому в исполняемый файл будет скопирован только printf.o), когда начнется процесс связывания?
Q2. Если связывание работает в другом подходе, который объединяет все стандартные функции, такие как printf, scanf и т. Д., В один libc.o, и когда дело доходит до перехода на любую стандартную функцию, в чем преимущество использования статической библиотеки? поскольку libc.a также нужно перекомпилировать так же, как libc.o нужно перекомпилировать
если есть изменение в любой стандартной функции?
Q3.Какое главное назначение использовать заголовочный файл? правильно ли мое понимание таким образом:
самая важная причина использования заголовочных файлов заключается в том, что на этапе компоновки компоновщик выдает несколько предупреждений определений, чтобы программисты могли проверить свой код до того, как произойдут ошибки во время выполнения?
потому что если мы не используем #include, мы все равно можем использовать printf теоретически, компоновщик в конечном итоге найдет определение в libc.o?