Можно ли идентифицировать неиспользуемые заголовки C ++, просматривая символы в двоичном файле?
Моя конечная цель - удалить случайно / ненужные включенные заголовки C ++. В результате некоторого поиска я понял, что для этого нет современных бесплатных Linux инструментов.
Обнаружение лишних # включений в C / C ++?
Как мне обнаружить ненужные файлы #include в большом проекте C ++?
Мне интересно, возможно ли достичь этого на более высоком уровне, посмотрев на символы. Схема, показанная ниже:
![image](https://i.stack.imgur.com/fj8I8.png)
mycomponent.cc
включает в себя component_1.hh
и component_2.hh
, и предположим, что component_2.hh
является неиспользованным включением, и они динамически связаны.
Вот план: Предположим, я знаю все библиотеки, на которые я должен ссылаться в первую очередь. Если я получу все неопределенные символы из mycomponent.so
, скажем my_list
, и сравню их со всеми определенными символами в component_1.so
и component_2.so
. Если component_2.so
не содержит символов из my_list
. Тогда я бы знал, что component_2.so
не нужен, тогда я могу go вернуться, чтобы посмотреть, какие заголовки из component_2
должны быть удалены. Конечно, это будет работать, только если все заголовки из component_2
не используются в my_component
Это жизнеспособно?