其他分享
首页 > 其他分享> > c – 使用boost :: serialization极大地增加了二进制大小

c – 使用boost :: serialization极大地增加了二进制大小

作者:互联网

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

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

我试图确定大小增加的原因,似乎序列化方法是原因.特别是,调用序列化的模块的目标文件(代码如“oarchive<< myObject”)很大,并且注释掉序列化部分会显着减小尺寸. 是否有可能阻止这些符号的产生,或者有选择地剥离它们?
剥离所有符号不是一种选择,因为我需要为自己的代码调试符号.

解决方法:

>将带有序列化调用的代码放到单独的模块中,将它们编译为大型目标文件.
>对它们使用strip –strip-debug只删除这个大的调试符号(稍后您将需要调试序列化库中的崩溃:)
>利润!链接剥离包装和未剥离的其他模块.

标签:c-2,linux,gcc,boost,boost-serialization
来源: https://codeday.me/bug/20190518/1128117.html