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

标签 c++ gcc boost embedded std

我正在研究嵌入式处理器,因此二进制大小非常重要。我试图避免使用标准库。但是,我想使用 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/

相关文章:

c - 当指针指向使用 malloc() 获得的内存位置时,编译器如何处理 CONST 限定符?

c++ - boost BGL : Edge property maps?

c++ - 如何使用 boost::asio::ip::tcp::resolver 处理本地和公共(public) ip

c++ - 如何编写用于使用已知键填充 map 的语义操作?

C++ vector 问题 - 'LNK2001: unresolved external symbol private: static...'

c - 在编译时检测段错误

c++ - 如果存在具有不同参数的继承成员,为什么对 C++ 结构的函数的调用会模棱两可?

c++ - RenderTarget->GetSize 不工作

c++ - 哪些 STL 算法可以安全地与单遍输入迭代器一起使用?

c++ - 使用 istream 从命名管道读取