我可以识别未使用的C++;通过查看二进制文件中的符号来获取标题? 我可以通过查看二进制中的符号来识别未使用的C++头吗?< /P> 我的最终目标是删除意外的/不必要的C++标题。通过一些搜索,我意识到没有最新的、免费的Linux工具可用于此

我可以识别未使用的C++;通过查看二进制文件中的符号来获取标题? 我可以通过查看二进制中的符号来识别未使用的C++头吗?< /P> 我的最终目标是删除意外的/不必要的C++标题。通过一些搜索,我意识到没有最新的、免费的Linux工具可用于此,c++,header,linker,nm,C++,Header,Linker,Nm,我想知道,通过观察符号,是否有可能在更高的层次上实现这一点。方案如下: mycomponent.cc包含component_1.hh和component_2.hh,假设component_2.hh是未使用的包含,并且它们是动态链接的 计划是这样的:假设我首先知道所有需要链接的库。如果我从mycomponent.so中获取所有未定义的符号,请说出myu列表,并将其与组件1.so和组件2.so中定义的所有符号进行比较。如果组件2.so不包含我的\u列表中的符号。然后我会知道组件_2。因此不需要,然

我想知道,通过观察符号,是否有可能在更高的层次上实现这一点。方案如下:

mycomponent.cc
包含
component_1.hh
component_2.hh
,假设
component_2.hh
是未使用的包含,并且它们是动态链接的

计划是这样的:假设我首先知道所有需要链接的库。如果我从
mycomponent.so
中获取所有未定义的符号,请说出
myu列表
,并将其与
组件1.so
组件2.so
中定义的所有符号进行比较。如果
组件2.so
不包含
我的\u列表中的符号
。然后我会知道
组件_2。因此不需要
,然后我可以返回查看
组件_2
中应该删除的标题。当然,只有在
my\u组件


这是否可行?

简短回答-否。代码实际未使用的任何符号都将得到优化,不会出现在最终二进制文件中。即使它们不是,也无法从二进制文件中确定sumbol最初来自哪个头部

您正在寻找的是一个源代码分析器,它将解析您的源代码并指出其中的任何问题,例如未使用/不必要的头包含