gpt4 book ai didi

c++ - 列出未使用的符号

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:19 24 4
gpt4 key购买 nike

我想从一个大型项目中删除无效代码,并希望从未使用的符号开始。无论如何让链接器列出它已经优化掉的未使用的符号?我将 GNU 链接器 (LD) 与 GCC 一起使用。

否则,任何 Binutils(readelf 或 objdump)都可以执行相同的功能吗?

最佳答案

大多数编译器/链接器优化掉未使用的符号。如果您在 *nix 系统上运行,您可以尝试在所有目标文件上使用命令“nm”,对其进行过滤和排序,以生成由这些目标文件定义的所有导出函数的列表。

nm *.o | grep "^[0-9a-f]* T " | sed 's/^[0-9a-f]* T //' | sort -u > symbols_in.txt

我相信您可以对最终的二进制文件执行相同的操作。

如果您随后比较两组结果,您应该得到所有未使用的导出函数的列表。

请注意,由于条件编译而被排除在外的代码可能会使用某些函数。例如。 #ifdef 开关表示在平台 A 上使用这样那样的内置功能,而在另一个平台上使用您自己的函数版本,因为没有内置或标准库等效,或者它无法正常工作。

关于c++ - 列出未使用的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com