Tam*_*lei 2 linker compilation g++
据我所知,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;
}
Run Code Online (Sandbox Code Playgroud)
COMMANDLINES:
g++ main.cpp -MD -Os -s -o test.exe
cl /MD /Os main.cpp /link /out:test2.exe
Run Code Online (Sandbox Code Playgroud)
可执行文件大小:
海湾合作委员会:13kB
MSVC:6kB
虽然这是双倍的,但所有必要的启动代码都会造成很大的差异.对于较大的程序,差异可以忽略不计.