博客转载:http://www.javashuo.com/article/p-zkydqmag-ns.htmlshell
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位开发工具链的安装windows
pacman -S mingw-w64-x86_64-toolchain
或者MINGW-w64 32位开发工具链的安装api
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 <stdio.h> int main() { printf("Hello world !\n");
return 0; }
编译出来的 a.exe, 用 dumpbin (这个是visual studio 提供的工具,固然,你也能够安装 Dependency Walker 这个独立小巧的工具来看)来查看 DLL 依赖关系spa
dumpbin /dependents a.exe
KERNEL32.dll 是 windows 提供的.net
msvcrt.dll 提供的接口,能够参考 C Run-Time Library Referenceblog