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
2568 0
|
缓存 编译器
BOLT 二进制反馈优化技术
大型应用的代码往往达到数十甚至上百MB,这导致在程序执行时缓存机制无法充分利用,导致大量时间花费在CPU和内存链路上。通过对热点函数的布局进行优化,我们可以更好地利用CPU cache,从而获得较为可观的性能提升。针对这一问题,在编译技术上有PGO和Bolt两种解决办法,两者都是一种通过收集程序在运行时如跳转,调用关系,函数热度等执行信息,这些收集到的程序运行情况数据(profile data),可以更好地指导一些程序优化的策略,如是否对函数进行内联,以及对基本块和函数布局的排布来提高特定场景下的程序性能。
3795 2
BOLT 二进制反馈优化技术
|
2月前
|
人工智能 JavaScript Linux
打造有长期记忆的AI助手!OpenClaw 零基础部署(阿里云/本地)+Obsidian联动实战及避坑指南
在AI代理工具泛滥的2026年,多数产品仍停留在“一次性聊天”层面——关闭页面即丢失记忆,无法沉淀个人知识库,更难以适配本地化数据管理需求。而OpenClaw(曾用名Clawdbot)+Obsidian+Obsidian CLI的组合,凭借“开源免费、本地可控、长期记忆”三大优势,成为搭建私人AI知识库的最优解:OpenClaw提供本地AI代理能力,Obsidian承载结构化知识存储,CLI实现工具间无缝联动,三者协同让AI从“临时聊天工具”升级为“能沉淀、可复用的私人知识助手”。
2005 131
|
2月前
|
存储 安全 算法
内存折叠术:Windows如何把有限的空间玩出花?
本文深入剖析Windows内存管理的底层魔术:从分页机制替代分段、虚拟地址映射与多级页表,到TLB加速、缺页中断处理、工作集与写时复制;涵盖大页优化、PFN数据库、ASLR/DEP安全机制,以及VirtualAlloc、内存映射文件等实战API,并延伸至内存压缩、NUMA架构与内核对象资源管理,全景展现操作系统如何以精妙算法驾驭物理限制。(239字)
768 7
|
C++ 容器
vector容器-插入和删除c++
vector容器-插入和删除c++
582 0
|
11月前
|
安全 数据安全/隐私保护 Windows
配置用户通过Telnet登录设备认证示例
本文介绍了通过AAA本地认证配置Telnet登录设备的组网需求、配置思路及操作步骤。企业管理员可借助此方案实现简单、安全的远程设备管理。具体包括:配置LSW1接口IP地址,使能Telnet服务器功能,设置VTY用户界面验证方式为AAA,以及创建本地用户并分配权限。最终验证显示,管理员可通过输入正确用户名和密码成功以Telnet方式登录设备。
配置用户通过Telnet登录设备认证示例
|
监控 安全 测试技术
监理20-25章
课件
341 15
|
Ubuntu Linux 编译器
MinGW-w64在windows/ubuntu上的安装及使用
MinGW-w64在windows/ubuntu上的安装及使用
2450 0
|
数据采集 人工智能 算法
视觉语言模型导论:这篇论文能成为你进军VLM的第一步
【6月更文挑战第20天】探索AI如何理解与生成图像和文本,VLM结合图像与文本映射,涉及图像描述、问答等任务。论文由多所名校和机构研究人员共创,介绍VLM历史、类型(对比学习、掩码、生成、预训练)及应用,如图像生成和问答。同时,讨论数据质量、计算资源和模型可解释性的挑战。[阅读更多](https://arxiv.org/pdf/2405.17247)
927 2
|
机器学习/深度学习 人工智能 自然语言处理
CosyVoice 与 SenseVoice:阿里FunAudioLLM两大语音生成项目的深度评测
近年来,基于大模型的语音人工智能技术发展迅猛,为自然语音人机交互带来新的可能。通义语音大模型无疑是这一领域的佼佼者。它涵盖了语音理解与语音生成两大核心能力,可支持多种语音任务,包括多语种语音识别、语种识别、情感识别、声音事件检测以及语音合成等
5361 1