首页 > 其他 > 详细

mingw和gcc的关系?mingw具有gcc的全部核心编译功能吗

时间:2020-09-30 17:06:26      阅读:135      评论:0      收藏:0      [点我收藏+]

 cygwin/gcc和MinGW都是gcc在windows下的实现(MINGW完整的工具集),但是它们有什么区别,在实际工作中如何选择这两种编译器。
 cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从boost库的划分中可以看出来端倪,cygwin下的gcc和linux下的gcc完全使用的是相同的Toolsets。
所以完全可以和linux一起同步更新gcc版本,而不用担心问题,并且在cygwin/gcc做的东西(不用win32的)可以无缝的用在linux下,没有任何问题。是在windows下开发linux程序的一个很好的选择。但是在cygwin/gcc下编译出来的程序,在windows执行必须依赖cygwin1.dll,并且速度有些慢,如果不想依赖这个东西的化,必须在gcc的编译选项中加入-mno-cygwin。加入这个选项其实gcc编译器就会自动的选择在安装cygwin/gcc时安上的mingw,这个mingw就是gcc的一个交叉编译。
 对于mingw作为gcc在windows上的一个实现,不像cygwin的gcc在一个模拟linux上运行,同时相当一部分linux的工具不能够使用。

根据以上的分析,如果在windows开发linux程序,cygwin是很好的选择。如果你开发的程序不介意有一个cygwin1.dll的话,也是可以选择cygwin的。如果你是想开发windows下的程序,还要必须用gcc的化,mingw是很好的一个选择。

 

MinGW只是一个外壳(VISUAL IDE,类似于Visual C++)将,编译根本工具是GCC.其实MinGW只是把gcc(g++ gdb等)封装一下,便于使用而已.
综上来说,MinGW具有gcc的所有功能,并且支持几乎所有非类UNIX特性的库函数.

 对于 GCC 的认知,很多读者还仅停留在“GCC 是一个C语言编译器”的层面,是很片面的。从本节开始,我将带领大家系统学习 GCC,本节先带领大家系统地了解一下 GCC。

谈到 GCC,就不得不提 GNU 计划。GNU 全称 GNU‘s Not UNIX,又被称为“革奴计划”,由理查德·斯托曼于 1983 年发起。GNU 计划的最终目标是打造出一套完全自由(即自由使用、自由更改、自由发布)、开源的操作系统,并初步将其命名为 GNU 操作系统(其 logo 如图 1 所示)。

GNU 计划的实施可谓一波三折,最重要的一点是,虽然该计划为 GNU 操作系统量身定做了名为 Thr Hurd 的系统内核,但由于其性能比不上同时期诞生的 Linux 内核,最终 GNU 计划放弃 The Hurd 而选用 Linux 作为 GNU 操作系统的内核。在 Linux 内核的基础上,GNU 计划开发了很多系统部件,GCC 就是其中之一(除此之外,还有 Emacs 等非常实用的软件)。

由此看来,GNU 计划最终实现了“打造一套自由、开源的操作系统”的初衷,但该操作系统并非完全产自 GNU 计划,因此其被称为 GNU/Linux 操作系统(人们更习惯称为 Linux 操作系统)。注意,开源、自由并不等于免费,有关它们的区别,读者可阅读《开源就等于免费吗?》一文。

早期 GCC 的全拼为 GNU C Compiler,即 GUN 计划诞生的 C 语言编译器,显然最初 GCC 的定位确实只用于编译 C 语言。但经过这些年不断的迭代,GCC 的功能得到了很大的扩展,它不仅可以用来编译 C 语言程序,还可以处理 C++、Go、Objective -C 等多种编译语言编写的程序。与此同时,由于之前的 GNU C Compiler 已经无法完美诠释 GCC 的含义,所以其英文全称被重新定义为  GNU Compiler Collection,即 GNU 编译器套件。

所谓编译器,可以简单地将其理解为“翻译器”。要知道,计算机只认识二进制指令(仅有 0 和 1 组成的指令),我们日常编写的 C 语言代码、C++ 代码、Go 代码等,计算机根本无法识别,只有将程序中的每条语句翻译成对应的二进制指令,计算机才能执行。

GCC 编译器从而停止过改进。截止到今日(2020 年 5 月),GCC 已经从最初的 1.0 版本发展到了 10.1 版本,期间历经了上百个版本的迭代。作为一款最受欢迎的编译器,GCC 被移植到数以千计的硬件/软件平台上,几乎所有的 Linux 发行版也都默认安装有 GCC 编译器。

值得一提的是,原汁原味的 GCC 编译器没有我们熟悉的界面窗口,要想使用它,必须编写对应的 gcc 命令。所谓原汁原味,指的是纯 GCC 编译器和集成了 GCC 编译器的开发软件(IDE),和前者相比,后者在集成 GCC 编译器功能的同时,还向用户提供了友好的界面窗口,使得用户即便记不住 gcc 命令,也能从事开发工作,这极大地降低了用户的学习成本。

https://blog.csdn.net/qilimi1053620912/article/details/88573017

 

首先,所谓语法区别是针对程序设计语言而言的,这里首先你要分清楚它们之间的区别。
Gcc:它是一款开源的C语言编译器,原来只能在Linux系统上使用,后来移植到了Windows操作系统上,以此为基础的编译环境典型的又MinGW。
它不是编程语言,所以没有语法这一说。G++:和GCC一个性质,只不过它是针对C++语言的。
VC:它有两种解释:
1.即VC本身,是微软公司推出的一款C++编译器,Visual C++开发环境就是以此为基础。
2.即Visual C++,与其说它是独立的一门编程语言,不如说是C++语言的微软公司版本,微软公司对单纯的C++语言做了扩充,更好的进行Windows编程和可视化编程等。这里能谈得上语法的只能是VC当中的Visual C++了,它和标准C++中大部分语法是一样的

mingw和gcc的关系?mingw具有gcc的全部核心编译功能吗

原文:https://www.cnblogs.com/XUYICHENMO/p/13753845.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!