使用Mingw-w64构建的库需要这些dll:
libwinpthread-1.dll
libstdc++-6.dll
libgcc_s_seh-1.dll
我想知道是什么,每个dll做什么?特别是libgcc_s_seh,是结构化异常处理吗?我以为mingw无法与seh合作。
为什么mingw需要总是用你的exe带来那些dll?
我想知道我是不是只是将视觉工作室用作Windows编译器而浪费我的时间。它虽然如此臃肿,9 gb用于安装。
答案 0 :(得分:0)
特别是libgcc_s_seh,是结构化异常处理吗?我以为mingw无法使用seh。
较新版本的GCC(如果我是正确的话,4.8+)应支持MinGW上的SEH。
我想知道这是什么,每个dll做什么?
它们提供运行时和标准库。
为什么mingw需要总是用你的exe带来那些dll?
因为您的程序使用它们。如果你编写的程序没有线程,标准库和异常以及任何操作系统交互,你就不需要它们。
这些DLL带来了运行程序所需的一切。顺便说一句。这只是不只是MinGW的事情,也发生在其他系统/编译器上。通常你只是不注意这一点,因为操作系统已经发布了库,例如。 MSVC库很可能在Windows机器上。 动态链接总是需要某种类型的库文件,在Windows上为.dll
,在Linux上为.so
。
如果您的系统上有它,请使用ldd <your application>
查看动态链接的库。
您可以将这些MinGW库安装到系统库或操作系统可以找到它的位置。这使您的程序可以使用它,您不再需要随每个应用程序一起发送它(避免重复)。
另一方面,另一个选择是静态链接它们。与动态链接不同,您不需要任何DLL;不利的一面是应用程序大小的增加(现在这三个库已经被解压缩到了exe中)。
我想知道我是不是只是将视觉工作室用作Windows编译器而浪费我的时间。
这取决于您的情况。但是我的回答可能会给你一些更多的见解。