我正在研究嵌入式处理器,因此二进制大小非常重要。我试图避免使用标准库。但是,我想使用 std::function。我从 boost 中提取了“function.hpp”,我正在尝试使用它,但是简单地包含 function.hpp 会增加我的二进制 200k 的大小,这使得它比我的处理器可以接受的更大。如果我包含标准库,它只会增加我的二进制文件 60k。我想不通,如果我还没有使用任何模板,就不会有任何开销。即使我这样做了,我也无法想象它是值(value) 200k 的代码。我使用的是 gcc 4.7,我已经禁用了我可以告诉“-g0”的调试信息并打开了优化“-O2”。
任何帮助将不胜感激。
最佳答案
即使您使用 -g0
,GCC 也会在编译的二进制文件中包含一些符号信息。为了真正摆脱所有符号,应该为链接器使用 --strip-all
命令行选项。
此外,由于可执行文件的大小对您很重要,请考虑编译器的 -fdata-sections
和 -ffunction-sections
以及 --gc -sections
链接器。
关于c++ - 包括 boost function.hpp,但不使用它,会使我的二进制文件的大小增加 200k。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698309/