包括boost函数.hpp,而不使用它,会使我的二进制文件的大小增加200k.为什么?

Including boost function.hpp, without using it, increases the size of my binary by 200k. Why?

本文关键字:二进制文件 增加 为什么 200k 我的 hpp 函数 boost 包括      更新时间:2023-10-16

我正在开发一个嵌入式处理器,所以二进制大小非常重要。我尽量避免使用标准库。不过,我想使用std::函数。我从boost中提取了"function.hpp",并试图使用它,但简单地包含function.hpp会增加我的二进制200k的大小,这使它比我的处理器所能接受的更大。如果我包括标准库,它只会增加我的二进制60k。我想不通,如果我还没有使用任何模板,就不会有任何开销。即使我这样做了,我也无法想象它有价值20万的代码。我使用的是gcc 4.7,我已经禁用了可以告诉"-g0"的调试信息,并启用了优化"-O2"。

任何帮助都将不胜感激。

GCC在编译的二进制文件中包含一些符号信息,即使使用-g0也是如此。为了真正消除所有符号,应该为链接器使用--strip-all命令行选项。

此外,由于可执行文件的大小对您来说很重要,请考虑编译器使用-fdata-sections-ffunction-sections,链接器使用--gc-sections