gpt4 book ai didi

linker - 是否可以使用 MINGW g++ 生成小型可执行文件?

转载 作者:行者123 更新时间:2023-12-02 06:23:07 25 4
gpt4 key购买 nike

我知道 MINGW-g++ 可以编译更大的可执行文件,因为它静态链接了很多东西。另一方面,MSVC++ 动态链接来自 VCRedist 包的 DLL,这就是为什么它生成更小的可执行文件的原因。

但是,是否可以在 windows 上以类似的方式使用 g++ 进行编译?不一定是 MINGW-g++,而是我可以与 Qt Creator 一起使用的东西(我没有添加 Qt 作为标签,因为它与问题无关)。

最佳答案

MinGW 完全能够动态链接到 msvcrt 运行时。您唯一没有摆脱这种方式的困惑是 GCC/MinGW 启动代码,它不是很大。

一个小型 C++ 测试程序(简单的 iostream hello world 程序,注意:我得到了与普通 C printf 版本相同的结果)。

#include <iostream>

using namespace std;

int main()
{
cout << "Hello World!" << endl;
return 0;
}

命令行:

g++ main.cpp -MD -Os -s -o test.exe
cl /MD /Os main.cpp /link /out:test2.exe

可执行文件大小:

GCC:13kB

MSVC:6kB

虽然是双倍的,但所有必要的启动代码都会造成很大的差异;对于较大的程序,差异可以忽略不计。

关于linker - 是否可以使用 MINGW g++ 生成小型可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5633864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com