MSYS 工具和TOOLCHAIN的配置

2019/05/12 23:16
阅读数 37

博客转载: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 <stdio.h>
int main()
{
        printf("Hello world !\n");
     return 0; }

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

dumpbin /dependents a.exe

  

KERNEL32.dll 是 windows 提供的

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

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部