使用boost :: serialization会大大增加二进制大小

Vla*_*adV 5 c++ linux gcc boost boost-serialization

我在我的应用程序中使用相当复杂的数据结构(主要使用STL容器),并使用Boost(v1.34)对它们进行序列化.

每当我使用调试符号(gcc -g)进行编译时,生成的可执行文件都会变得很大 - 大约25 MB.剥离所有调试符号可将大小减小到约3 MB.

我试图确定大小增加的原因,似乎序列化方法是原因.特别是,调用序列化的模块的目标文件(像"oarchive << myObject"这样的代码)很大,并且注释掉序列化部分会显着减小尺寸.

是否有可能阻止这些符号的产生,或者有选择地剥离它们?
剥离所有符号不是一种选择,因为我需要为自己的代码调试符号.

bla*_*aze 4

  1. 将带有序列化调用的代码放入单独的模块中,将它们编译为大型对象文件。
  2. 对它们使用strip --strip-debug仅删除这个大的调试符号(稍后您肯定需要它来调试序列化库内的崩溃:)
  3. 利润!将剥离的包装器和未剥离的其他模块链接在一起。