我的项目大量使用模板元编程。大多数操作发生在递归模板中,这些模板生成的对象和函数具有很长(损坏的)符号名称。
尽管构建时间只有约 30 秒,但生成的可执行文件大约是 1 兆字节,而且主要是符号名称。
在 Linux 上,向-s
GCC 添加一个参数可以将大小降低到约 300 KiB,但使用文本编辑器快速查看会发现其中仍然有很多繁琐的名称。我找不到如何在 OS X 上正确剥离任何东西……现在就将其注销。
我怀疑提供的 vtable 条目typeid(x).name()
占用了很大一部分。删除对typeid
操作符的所有使用并不会导致在 Linux 上剥离更多内容。我认为默认异常处理程序使用该工具来报告未捕获异常的类型。
如何在我的可执行文件中最大化剥离并最小化这些千字节大小的符号?