我可以通过查看二进制文件中的符号来识别未使用的 C++ header 吗?
Can I identifying unused C++ header by looking at the symbols in the binary?
我可以通过查看二进制文件中的符号来识别未使用的 C++ headers 吗?
我的最终目标是删除 accidentally/unnecessary 包含的 C++ headers。通过一些搜索,我意识到没有 up-to-date 免费的 Linux 工具可用于此。
Detecting superfluous #includes in C/C++?
How should I detect unnecessary #include files in a large C++ project?
我想知道是否可以通过查看符号在更高层次上实现这一点。方案如下:
mycomponent.cc
包含 component_1.hh
和 component_2.hh
,假设 component_2.hh
是未使用的包含,它们是动态 linked.
计划如下:假设我一开始就知道我需要 link 的所有库。如果我从 mycomponent.so
中获取所有 undefined symbols,比如 my_list
,并将其与所有 defined symbols 进行比较component_1.so
和 component_2.so
。如果 component_2.so
不包含来自 my_list
的符号。然后我会知道 component_2.so
是不需要的,然后我可以回去看看 component_2
中有哪些 headers 应该被删除。当然,这只有在 component_2
中的所有 headers 都没有在 my_component
中使用时才有效
这可行吗?
简答 - 没有。代码实际未使用的任何符号都将被优化掉,不会出现在最终的二进制文件中。即使它们不是,也无法从二进制 中确定 哪个 header 包含了 sumbol 最初来自。
您正在寻找的是源代码分析器,它将解析您的源代码并指出其中的任何问题,例如 unused/unnecessary header 包含。
我可以通过查看二进制文件中的符号来识别未使用的 C++ headers 吗?
我的最终目标是删除 accidentally/unnecessary 包含的 C++ headers。通过一些搜索,我意识到没有 up-to-date 免费的 Linux 工具可用于此。
Detecting superfluous #includes in C/C++?
How should I detect unnecessary #include files in a large C++ project?
我想知道是否可以通过查看符号在更高层次上实现这一点。方案如下:
mycomponent.cc
包含 component_1.hh
和 component_2.hh
,假设 component_2.hh
是未使用的包含,它们是动态 linked.
计划如下:假设我一开始就知道我需要 link 的所有库。如果我从 mycomponent.so
中获取所有 undefined symbols,比如 my_list
,并将其与所有 defined symbols 进行比较component_1.so
和 component_2.so
。如果 component_2.so
不包含来自 my_list
的符号。然后我会知道 component_2.so
是不需要的,然后我可以回去看看 component_2
中有哪些 headers 应该被删除。当然,这只有在 component_2
中的所有 headers 都没有在 my_component
这可行吗?
简答 - 没有。代码实际未使用的任何符号都将被优化掉,不会出现在最终的二进制文件中。即使它们不是,也无法从二进制 中确定 哪个 header 包含了 sumbol 最初来自。
您正在寻找的是源代码分析器,它将解析您的源代码并指出其中的任何问题,例如 unused/unnecessary header 包含。