LINUX.ORG.RU

Сообщения arbv

 

Линкеры. Оптимизация и удаление лишнего кода во время линковки.

Форум — Development

Здравствуйте. Собственно у меня несколько вопросов по поводу работы линкеров в современных тулчейнах.
Во первых, с удивлением обнаружил, что линкер из binutils по умолчанию линкует сожержмое объектных файлов ПОЛНОСТЬЮ. То есть, даже если из одного объектного файла с несколькими функциями во всей программе используется только одна из них - всё равно прилинковано будет всё содержимое объектного файла. Что интересно, линкер от M$ под оффтопиком по умолчанию делает тоже самое.
Я знаю что для gcc и ld можно укзать специальные опции, благодяря которым компилятор каждую функцию поместит в отдельную секцию, а линкер потом вырежит все неиспользуемые. У линкера от M$ тоже есть специальная опция.


Но почему такое поведение не принято по умолчанию? Это выглядит как просто расходование дискового пространства - зачем мне в программе код, который нигде не используется? Мне такое поведение кажется глупым, потому прошу знающих людей объяснить и указать где я не прав.


Соответсвенно ещё вопрос, насколько современные линкеры стрипят код - сколько в создаваемых с помощью современных тулчейнов лишнего, совершенно не нужного кода?
Буду особенно благодарен, если кто скажет чего можно почитать в тему.

 , , , ,

arbv ()

RSS подписка на новые темы