后台:切换到CMake后,我发现可执行文件的大小增加了三倍,达到1.3 MiB。 (在使用MinGW64的Windows上)使用工具浏览EXE我通过查看包含的字符串注意到一些明显的错误,例如意外使用调试模式和静态链接其中一个库。在与-s
链接后,它降至可接受的200 KiB。
问题:但是我仍然看到很多重复的字符串。例如:
GCC: (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 5.2.0
为什么重复50次,不能只共享相同的字符串而不是重复它?
让我更加好奇的是许多奇怪的字符串也是重复的,例如:
([^_]
X[^_]A\A]
fffff.
UWVSH
AWAVAUATUWVSH
此处的完整列表:https://pastebin.com/YBdhau0Y有关这些字符串来自何处以及它们用于何种内容的任何想法?其中一些是另一个的后缀版本,例如UWVSH
是AWAVAUATUWVSH
的最后一部分。它们没有出现在任何头文件中,但我在对象文件中找到了一个只对矩形进行了数学运算的类。
问题:
注意:我估计通过删除重复数据可以节省大约5 KiB,所以我只是很好奇。
UPDATE1:
使用int main(){}
编译gcc -Os -s -fno-ident
会得到一个17 KiB可执行文件,其中包含两次字符串AUATUWVSH
。它还包含GCC标识符字符串26次。