Я изменил огромный проект C ++ с большим количеством файлов и функций. Проблема в том, что сейчас существует множество бесполезных файлов, включений, глобальных переменных и функций. Удалить их вручную было бы больно. Есть ли инструмент, который анализирует код, как это делает компилятор, и удаляет все неиспользуемые вещи? Я бы предпочел инструмент для Unix. Также поможет способ удалить только один или несколько из упомянутых выше бесполезных компонентов.
Существует несколько возможностей самого инструментария GNU для оптимизации размера кода, если вы не возражаете, что компоновщик делает это каждый раз, когда вы собираете свою систему. И в С ++ всегда возникает вопрос, что же такое «неиспользуемый код» (поскольку работа с указателями и приведением может ввести в заблуждение любой инструмент).
Таким образом, ваш лучший выбор для этого Золотой линкер (Замена ld на золото — есть опыт?) и следующие опции:
-gc-sections
: GCC —gc-секции и поиск символьных зависимостей--icf
: GCC (/ Clang): объединение функций с одинаковыми инструкциями (сворачивание COMDAT)-Os
: Процесс уменьшения размера исполняемого файла«Большим» подходом были бы статические анализаторы кода / инструменты рефакторинга кода (Как я могу узнать, какие части в коде никогда не используются?), а затем некоторые библиотеки, такие как Boost, идут с их собственные инструменты уменьшить количество файлов.