博客转载:https://blog.csdn.net/hunterhuang2013/article/details/70880569

1. MSYS2 自带的开发环境,安装的包叫 msys2-devel

pacman -S msys2-devel

共有 6 组员在组 msys2-devel 中

1) binutils 2) cocom 3) gcc 4) gcc-fortran 5) msys2-w32api-headers 6) msys2-w32api-runtime

2. MinGW-w64 64位开发工具链的安装

pacman -S mingw-w64-x86_64-toolchain

或者MINGW-w64 32位开发工具链的安装

pacman -Syu mingw-w64-i686-toolchain

运行不同的 shell,则执行对应版本的 gcc

那么,这两者有什么区别呢?

一言以蔽之,前者编译出来的可执行文件,要依赖 MSYS2 提供的动态链接库,而后者不需要(暂时没发现这个情况,如下图片是我使用 mingw-w64-i686-toochain 中的gcc编译的,可能安装x86_64的有这种情况吧)。下面详细说明一下: MSYS2 下的 gcc 编译环境,编译的可执行文件要依赖于 msys-2.0.dll,这个 DLL 提供了 Linux 下编程的提供的函数和接口,例如 fork 函数。 这个编译环境对于编译基于 Linux 下编写的软件,是非常适合的。例如编译 GNU 提供的各种工具。例如,你想编译最新版本的 GNU grep 工具,MSYS2 下的这个环境是非常适合的,环境非常类似于 cygwin. 一个简单的 hello world 程序:

#include

using namespace std;

int main()

{

printf("help children in Waganda\n");

return 0;

}

编译出来的 a.exe, 用 dumpbin (这个是visual studio 提供的工具,当然,你也可以安装 Dependency Walker 这个独立小巧的工具来看)来查看 DLL 依赖关系

dumpbin /dependents a.exe

注意:如果提示'dumpbin'不是内部或外部命令,也不是可运行的程序或批处理文件

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

也就是dumpbin可执行程序所在目录,提供一下。

KERNEL32.dll 是 windows 提供的

msvcrt.dll 提供的接口,可以参考 C Run-Time Library Reference

相关链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。