我不知道为什么GCC编译器标志-ffunction-sections和链接器标志--gc-sections不会消除不必要的响应。我最终的可执行文件中未引用的符号/功能代码。
为什么在GCC文档中无法正常工作?

可能我监督了一些意外的引用!
检查已经使用过这种非常好的方法:
链接器脚本中带有/ DISCARD /的GCC --gc-sections and finding symbol dependencies。没有成功没有提及我未使用的功能。

没有机会自动消除无效代码!为什么???

最佳答案

答案很简单(以我为例):

我正在使用CMake构建我的项目,它正在插入标记-rdynamic!
据我所知,GCC文档中没有提到-rdynamic--gc-sections选项的组合。 应该有这样的警告: -rdynamic导致--gc-sections无用的bcs。所有符号都被隐式引用。

另请参阅:What exactly does `-rdynamic` do and when exactly is it needed?

当然,只有CMake用户会受到此影响...(不知道):



要摆脱最不需要的-rdynamic CMakeLists.txt,只需添加cmake_policy(SET CMP0065 NEW)

关于c++ - 为什么GCC --gc-sections和-ffunction-sections无法正常工作? (cmake版本),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56283941/

10-11 00:47