MinGW介绍

简介: MinGW介绍

MinGW 主要是是把 GCC 编译器以及一些 配套的命令 objdump 跟 readelf 也移植到 Windows 平台。官网地址:www.mingw-w64.org

参考 C语言中文的的教程 《MinGW下载和安装教程》安装一下 。 安装在 C盘,如下:

我们查看一下这个 MinGW 目录下面有什么,如下:

可以看到,有很多 跟 编译器相关的 软件。这些软件可以在 WinCMD 下直接运行的,我们进入 命令行,如下:



还可以发现,在 lib 目录下,有很多的 .a 跟 .o 文件,如下:

.a 文件不用管,实际上目前 Linux 的 .a 文件跟 Windows 的 .lib 文件,格式是完全一样的,都是打包。

我们想知道这些 .o 文件 跟 msvc 编译出来的 .obj 文件是不是一样的,用 dumpbin 开看一下,可以解析出信息,文件格式是 COFF ,所以 MinGW 里面的 .o 实际上就是 .obj 文件,只是变了一下后缀,因为 gcc 编译出来的 就是 .o 后缀。

提示,在 Linux 下用 gcc 编译出来的 .o ,是无法用 dumpbin 解析的,因为 Linux 的 .o 是 ELF 格式。


在 MinGW 目录下创建一个 项目 projects/c-single ,还是以 hello.c 演示一下 gcc 的用法。

使用以下命令编译 hello.c

cd C:\MinGW\bin
.\gcc.exe -c -o C:\MinGW\projects\c-single\hello.o C:\MinGW\projects\c-single\hello.c

初学者我不建议你 配置 MinGW的bin目录为环境变量,因为会影响文章后面的 MSYS2 的环境。

然后再链接 hello.o 为 exe 文件,如下:

.\gcc.exe -o C:\MinGW\projects\c-single\hello.exe C:\MinGW\projects\c-single\hello.o

运行结果如下:

再用 dumpbin 查看一下这个 hello.exe 的依赖,如下:

dumpbin /DEPENDENTS C:\MinGW\projects\c-single\hello.exe

从上图可以看出,MinGW 的 gcc 编译出来的 exe 非常 Windows 原生,跟 cl.exe 简直一模一样。


之前提到 hello.o 实际上跟 hello.obj 是类似的,那可不可以直接用 link.exe 来把 hello.o 链接成 exe 呢?试一下。

cd C:\MinGW\projects\c-single\
link.exe /DEBUG /OUT:hello.exe hello.o

可以看到,报错了。

因此 MinGW 跟 MSVC 的编译器 ,链接器 不要交叉使用。

虽然 .o 跟 .obj 文件格式一样,但是内部的内容,还是有点区别的。因为他们的链接器需要不同的内容。


目录
相关文章
|
Windows
Coze开源软件Windows客户端-coze_desk
Coze开源软件Windows客户端-coze_desk
2182 0
|
监控 安全 Linux
Qt 文件类实战:解锁文件操作的无限可能
Qt 文件类实战:解锁文件操作的无限可能
761 1
|
C++ 容器
vector容器-插入和删除c++
vector容器-插入和删除c++
388 0
|
Ubuntu Linux 编译器
MinGW-w64在windows/ubuntu上的安装及使用
MinGW-w64在windows/ubuntu上的安装及使用
1838 0
|
前端开发 搜索推荐 API
【Qt 学习笔记】QWidget的styleSheet属性 | RGB | 在线调色板
【Qt 学习笔记】QWidget的styleSheet属性 | RGB | 在线调色板
1078 5
|
编译器 C语言 C++
MinGW安装gcc
MinGW安装gcc
437 0
|
JavaScript
JS【详解】setTimeout 延时(含清除 setTimeout,计时开始时间,0 秒延时解析,多 setTimeout 执行顺序,setTimeout 应用场景,网红面试题)
JS【详解】setTimeout 延时(含清除 setTimeout,计时开始时间,0 秒延时解析,多 setTimeout 执行顺序,setTimeout 应用场景,网红面试题)
2792 0
|
存储 数据可视化 编译器
面向 C++ 的现代 CMake 教程(二)(2)
面向 C++ 的现代 CMake 教程(二)
416 0
|
边缘计算 运维 容灾
重磅发布!阿里云发布《应用多活技术白皮书》,并开源首个多活项目AppActive
1月11日,在上海的云原生实战峰会上,阿里云智能研究员丁宇发布了“应用多活技术白皮书”,同时为了推动业界容灾的发展,建立云原生业务容灾标准,阿里云开源了“应用多活”项目AppActive。
62823 100
重磅发布!阿里云发布《应用多活技术白皮书》,并开源首个多活项目AppActive
Visual Studio 2022编译错误 Error MSB8041-此项目需要MFC库解决方案
Visual Studio 2022编译错误 Error MSB8041-此项目需要MFC库解决方案
2335 0

热门文章

最新文章