LINUX.ORG.RU

С какими параметрами нужно пускать gcc?


0

0

Как заставить gcc при линковке не включать функции, у которых нет вызова?

То есть допустим я в проекте пишу функцию, которая пока еще нигде не вызывается (допустим не готова еще).

Потом после линковки проекта смотрю через nm

nm ./program

и вижу что недописанная функция все равно включена в код :-(

Как-то не хорошо получается.

Может возможно как-то через параметры gcc заставить не включать в код неиспользуемые функции.

★★★★

objcopy помоему умеет резать определенные символы ..

lg ★★
()

и вообще такие функции в коде надо окружать чем-то типа
#ifdef notyet
/* function */
#endif

lg ★★
()

Странно.

Кажется компиляторы от borland такое делали по умолчанию.

Во всяком случае если в классе была какая-то функция, которая не использовалась, то компилятор ставил вместо нее заглушку, и ее код не включал.

Dead ★★★★
() автор топика

Все, что уже скомпилировано будет добавлено.
Сам gcc в момент компиляции не может узнать то, что что-то не
будет вызываться. Исключением являются static-функции, для них, если нет ссылок, генерируются предупреждения.
Объектный файл является неделимым (ну почти :).
Исключением является работа с библиотеками.
Но и там, если в модуле есть включаемый символ, то будет добавлен весь модуль.
Только системы с "проектным мышлением" потенциально могут исключать код.


io ★★
()

А вот в MS компиляторе есть такой ключ: /Gy

anonymous
()

Мда. Действительно жаль.

Dead ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.