我目前正在移植一个库(不是我自己编写的,我“只是”移植它)以使用 MinGW 编译器。该库是真正的重量级,拥有各种C++“黑魔法”(多重继承,模板的模板,非常宏重等)。
现在,几个星期后,我把所有东西都编译好了,而且它似乎也运行良好(单元测试工作,演示也是如此)。
然而,让我感到困扰的是 MinGW 二进制文件与 MSVC 二进制文件相比的绝对大小。我知道,由于必须包含自己的非 MS 系统库,MinGW 二进制文件通常稍大一些,但我们谈论的是 MinGW 的 33 MB 和 MSVC 的 13 MB。这就是“发布”(-O3 和 -s 标志)版本!
这些是我在 MinGW 中编译的标志:
-c -O3 -s -MMD -march=native -frtti
对于链接器,它是这样的:
-shared -s -static-libgcc -static-libstdc++
我知道 rtti 增加了一些大小,但它也必须在 MSVC 二进制文件中。静态 libgcc 和 libstdc++ 库不可能那么大……或者可以吗?
我在这里想念什么?通常,MinGW 和 MSVC 之间的大小差异并没有那么大。