zoukankan      html  css  js  c++  java
  • MSYS2 3: 开发工具和TOOLCHAIN的配置

    博客转载: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 <iostream>
    using namespace std;
    
    int main()
    {
        printf("help children in Waganda
    ");
        return 0;
    }

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

    dumpbin /dependents a.exe
    

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

    C:Program Files (x86)Microsoft Visual Studio 12.0VCin

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

    1. KERNEL32.dll 是 windows 提供的
    2. msvcrt.dll 提供的接口,可以参考 C Run-Time Library Reference
  • 相关阅读:
    Centos7开机启动脚本代码
    浏览器标签上的 favicon 图标是怎么实现的?
    Android添加权限大讲解
    一个安卓小项目(3)——安卓FTP方式发送文件到服务器
    一个安卓小项目(2)——各模块具体流程
    XML中特殊符号转义实体
    Android Activity生命周期
    牛是怎么死的原文+感想
    一个安卓小项目(1)——需求与分工
    不忘初心
  • 原文地址:https://www.cnblogs.com/flyinggod/p/10854251.html
Copyright © 2011-2022 走看看