Цитата
И все равно остается непонятным, в чем принципиальная разница (для toolchain-а) между выбором нужных функций из библиотечного файла и компиляцией файла в объектный с последующей выборкой тех же требуемых функций
Если посмотреть внимательно то можно заметить, что каждая библиотечная функция в стандартной библиотеке написана в отдельном файле. Это означает что у каждой функции свой объектный файл. Множество таких объектников объеденены в библиотеку.
Во время линковки, линковщик ищет среди всех библиотек и по всем объектным файлам содержащихся в них на предмет какой-нибудь переменной или функции, и нужный объектник прикрепляет к проекту.
Вот поэтому, стандартные библиотеки не добавляют лишних функций. Линковщик добавил, например, объектник с функцией memcpy. А в этом объектнике ничего кроме memcpy и нет. Если в файле объявлено несколько функций, в код добавятся все.
Наколько знаю, все функции объявленные в файле, который прикреплен к проекту, попадут в конечный код. Это связано с тем, что в командную строку линковщика они попадают как объектники.
Например:
link main.o leds.o ADC.o RTC.oВ таком случае линковщик не думает, нужно ли это или нет, а просто добавляет в конечный код.