包括boost function.hpp,不使用它,我的二进制文件的大小增加了200k。为什么?

时间:2013-02-05 00:42:27

标签: c++ gcc boost embedded std

我正在研究嵌入式处理器,因此二进制大小非常重要。我试图避免使用标准库。但是,我想使用std :: function。我从boost中提取了“function.hpp”,我正在尝试使用它,但只是包含function.hpp会增加二进制200k的大小,这使得它比我的处理器可以接受的大。如果我包含标准库,它只会增加我的二进制60k。我无法弄明白,如果我还没有使用任何模板,那就不应该有任何开销。即使我这样做,我也无法想象这是20万的代码。我正在使用gcc 4.7,我已经禁用了调试信息,我可以告诉“-g0”并打开优化“-O2”。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

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

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