我在我的应用程序中使用相当复杂的数据结构(主要使用STL容器),并使用Boost(v1.34)对它们进行序列化。
每当我使用调试符号(gcc -g)进行编译时,生成的可执行文件都会变得很大 - 大约25 MB。剥离所有调试符号可将大小减小到约3 MB。
我试图确定大小增加的原因,似乎序列化方法是原因。特别是,调用序列化的模块的目标文件(像“oarchive<< myObject”这样的代码)很大,并且注释掉序列化部分会大大减小尺寸。
是否可以防止产生这些符号,或者有选择地剥离它们? 剥离所有符号不是一个选项,因为我需要为自己的代码调试符号。
答案 0 :(得分:4)
答案 1 :(得分:2)
strip -w -K '!*serialization*'
轻松,无需编译时间体操。以下是对二进制文件的改进:
# ls -lh EnrollGUI
-rwxr-xr-x. 1 root root 17M Aug 8 2012 EnrollGUI*
# strip -w -K '!*serialization*' EnrollGUI
# ls -lh EnrollGUI
-rwxr-xr-x. 1 root root 1.1M Aug 8 2012 EnrollGUI*