按照说明编译 wxWidgets 时,我能得到什么作为输出?

What do I get as output when compiling wxWidgets as per instructions?

提问人:Martin_from_K 提问时间:11/14/2023 更新时间:11/14/2023 访问量:26

问:

我下载了wxWidgets源代码并按照此处的说明进行操作: https://docs.wxwidgets.org/3.2.3/plat_msw_install.html
我从这个文件安装了MinGW:

winlibs-i686-posix-dwarf-gcc-12.2.0-mingw-w64ucrt-10.0.0-r4.zip
它编译良好,并且按照指示编译最小示例。 现在我想知道我是否有 32 位或 64 位应用程序的库。此外,我从 github 下载了所有可用的软件包 wxMSW-3.2.3_gcc1220_xxx.7z,但我创建的文件都不完全相同。 有什么区别? 最后,最小示例编译为 97MB 的 exe!我发现网页在谈论 4MB。为什么会有这么大的差异。使用最新版本的 wxWidgets 可以实现哪个最小尺寸?我不在乎 1 或 2 MB,但对于一个空窗口来说,几乎 100MB 似乎非常多。
感谢您的帮助

mingw wxwidgets

评论


答:

1赞 VZ. 11/14/2023 #1

您将获得与所使用的编译器相对应的输出。从包含 的文件的名称中,您必须使用 32 位编译器。i686

至于大小,这 100MB 大部分都是调试符号。您可以使用命令剥离二进制文件以显着减小其大小(但您将无法轻松调试它)。发布版本中静态链接的最小样本的正常大小确实应该是几 MB(使用共享库时会小得多,但这不是一个公平的比较)。strip

评论

0赞 Martin_from_K 11/14/2023
因此,32 位编译器只能为 32 位应用程序编译,而 64 位编译器可以同时为两者编译,对吧?如果是这样,我需要告诉 64 位编译器为 32 位应用程序编译哪个编译器标志。
0赞 Martin_from_K 11/14/2023
第二个问题:为什么我得到的库与我下载的 32 位库不同?有不同类型的 MinGW GCC12.2 吗?(MSYS、Cygwin......对不起,我不是这方面的专家。感谢您的帮助
0赞 Igor 11/14/2023
@Martin_from_K,正如 Vadim 已经解释的那样,库的差异来自调试与发布版本。
0赞 Igor 11/14/2023
@Martin_from_K,至于标志 - 我相信你应该用它来编译 32 位应用程序。-m32
0赞 VZ. 11/15/2023
由于使用不同的构建选项或编译器版本可能略有不同,该库可能会有所不同。一般来说,我不确定 wxMSW 字段是否完全可重现(wxGTK 字段是或至少可以)。