在VC6的时候,减小PE程序的最有效手段就是让程序链接到msvcrt.lib,这样可以消除大量的C库内联函数。但是在现在的VS版本下,只链接msvcrt.lib往往无法编译,经常会有很多C函数找不到。都是自己写的代码还好,可以手动剔除,但是在引入第三方库的时候就难受了。实际上微软更改了CRT,现在只需要同时链接以下3个库就可以生成体积很小,且移植性很好的PE程序(测试了Win7 Starter 32bit和2008r2,都没问题)。
- ucrt.lib
- libvcruntime.lib
- msvcrt.lib
更具体的内容在https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/crt-library-features?view=msvc-160
为防止链接挂掉,留一分PDF版本。
发表回复