Доброго времени суток.
Давным-давно, во времена windows и msvc6, один добрый дядя рассказал мне, что если сделать статическую библиотеку, и прилинковать к своему приложению, то прилинкованы будут исключительно те функции, которые используются (прямо или косвенно).
Как-то не доводилось мне до этого, но пописывая под atmega32 начинаешь задумываться о размере своих программ. И каково же было мое удивление, когда я обнаружил что линковщик присоединяет весь .o из архива, не дробя его на функции.
В примере:
test1.c
void Test1()
{
}
void Test2()
{
}
если его собрать в архив, а потом прилинковать к приложению, которое пользует только Test1, то Test2 тоже будет прилинкован (а он может жрать 100500 байт флеша)
что же это получается товарищи, меня обманули?
или как-то можно добиться такого поведения? man ld изучал, может проглядел, буду благодарен если кто ткнет носом.