我的应用程序需要一个12MB的文本文件作为内置资源。我很惊讶最终得到的可执行文件只有12MB多一点,所以我在命令行上尝试了zip,它只减少了68%,低于70%的阈值。
bz2将其压缩得更小。有没有一种方法可以使用这种压缩,或者更好的方法?我确信纯文本文件过去可以很好地压缩。
我不清楚如何降低Makefile中的“阈值”。rcc -h说:
--threshold <level> Threshold to consider compressing files.那么这会转化为--threshold="70%"吗?
发布于 2016-05-18 05:44:15
首先,-threshold标志上的documentation:
指定在决定是否压缩文件时使用的阈值级别(以百分比表示)。如果文件大小的减少大于阈值级别,则对其进行压缩;否则,将存储未压缩的数据。默认阈值级别为70%,这意味着将原始大小为30%或更小的压缩文件存储为压缩数据。
要将压缩级别增加到最大值,请执行以下操作:
rcc -level 9 ...或者将压缩阈值提高到足够的程度:
rcc -threshold 35% ...当然,您可以将这两者结合起来。默认的压缩级别是-1,这意味着zlib决定它压缩的程度。
编辑:文档在讨论压缩时自相矛盾(或者根本不清楚)。对于-threshold标志,它使用整数值而不是百分比:
rcc -compress 2 -threshold 3需要进行一些测试。
发布于 2016-05-18 08:18:35
谢谢你的回答,乔恩。足以让命令行zip报告的通缩达到71%,生成的可执行文件降到4.6MB,所以理论是正确的。
rcc似乎只产生类似于输出的XML,但接受-threshold和-compress选项。在没有语法错误报告的情况下,任何值都是可以接受的。
我不确定将阈值选项放在makefile中的什么位置。引用我的文件的部分:
都被拒绝了。
此行定义CXXFLAGS:CXXFLAGS = -pipe -g -Wall -W -D_REENTRANT -fPIC $(DEFINES)
我甚至尝试将'COMPRESS = gzip -9f‘行改为'COMPRESS = bzip2 -9f',但结果没有什么不同。
https://stackoverflow.com/questions/37286107
复制相似问题