8

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

任何帮助将非常感激。

4

1 回答 1

2

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

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

于 2013-02-05T01:25:03.103 回答