一、简介

GCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分。GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。GCC支持多种计算机体系结构芯片,如x86、ARM、MIPS等,并已被移植到其他多种硬件平台?[1]?。

GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection

二、GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。

gcc是GCC中的GUN C Compiler(C 编译器)

g++是GCC中的GUN C++ Compiler(C++编译器)

gcc和g++的主要区别

1. 对于 *.c和*.cpp文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的)

2. 对于 *.c和*.cpp文件,g++则统一当做cpp文件编译

3. 使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL

4. gcc在编译C文件时,可使用的预定义宏是比较少的

5. gcc在编译cpp文件时/g++在编译c文件和cpp文件时(这时候gcc和g++调用的都是cpp文件的编译器),会加入一些额外的宏,这些宏如下:

#define __GXX_WEAK__ 1

#define __cplusplus 1

#define __DEPRECATED 1

#define __GNUG__ 4

#define __EXCEPTIONS 1

#define __private_extern__ extern

6.????????在用gcc编译c++文件时,为了能够使用STL,需要加参数 –lstdc++ ,但这并不代表 gcc –lstdc++ 和 g++等价,它们的区别不仅仅是这个

三、MinGW-w64 ?

MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在?Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。一句话来概括:MinGW 就是 GCC 的 Windows 版本 。

以上是 MinGW 的介绍,MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。

正因为如此,MinGW 现已被?MinGW-w64 所取代,且?MinGW 也早已停止了更新,内置的 GCC 停滞在了 4.8.1 版本,而 MinGW-w64 内置的 GCC 则更新到了 6.2.0 版本。

B、为什么使用 MinGW-w64 ?

1. MinGW-w64 是开源软件,可以免费使用。

2. MinGW-w64 由一个活跃的开源社区在持续维护,因此不会过时。

3. MinGW-w64 支持最新的 C语言 标准。

4. MinGW-w64 使用 Windows 的C语言运行库,因此编译出的程序不需要第三方 DLL ,可以直接在 Windows 下运行。

5. 那些著名的开源 IDE 实际只是将 MinGW-w64 封装了起来,使它拥有友好的图形化界面,简化了操作,但内部核心仍然是 MinGW-w64。

MinGW-w64 是稳定可靠的、持续更新的 C/C++ 编译器,使用它可以免去很多麻烦,不用担心跟不上时代,也不用担心编译器本身有bug,可以放心的去编写程序。

C、MinGW-w64 适合做什么?

对于熟悉 MinGW-w64 的高手而言,它可以编译任何 C语言 程序。但对于一般人来说,MinGW-w64 太过简陋,连图形用户界面都没有。这让习惯使用鼠标的人,感到很痛苦。虽然也可以通过一些配置,让 MinGW-w64 拥有图形用户界面,但那个过程非常麻烦。

除此之外,编译复杂的程序时,还需要你会编写 Makefile ,否则只能一个文件一个文件的编译,可想而知会多么辛苦。

但对于初学 C语言 的人来说,MinGW-w64 是正合适的编译器,至少黑色的命令提示符界面很有编程的气氛,感觉很酷。

在刚开始学 C语言 时,所有代码通常都写在一个文件中,只要输入几个简单的命令,就能用 MinGW-w64 编译成可执行文件。虽然 ?VS2015 等编译器,只要点击下鼠标就可以完成编译,但它会自动生成一大堆工程文件,让初学者摸不着头脑。而 MinGW-w64 则只会生成一个可执行文件。

如果对 MinGW-w64 和 VS2015 等编译器进行一下形容,那么 MinGW-w64 是手动的,而 ?VS2015 等编译器则是自动的。因此 MinGW-w64 的编译过程更加直观容易理解,也比较适合C语言学习。

总而言之,对于一般人来说,MinGW-w64 适合学习 C语言 时使用,真正工作还是用 ?VS2015 更好。当然如果您是在 Linux 下工作,那么Code::Blocks可能是一个选择,不过最大的可能是您必须习惯使用?GCC 来编译程序。

mips linux gcc mingw,gcc相关推荐

  1. msvc MinGW gcc g++关系

    首先,msvc是windows下针对c.cpp的编译器 gcc,g++一般是GNU下针对linux编译器 MinGW(Minimalist GNUfor Windows)是跨平台的,能在windows ...

  2. Windows平台MinGW GCC编译并使用C++ Boost

    Windows平台MinGW GCC编译并使用C++ Boost 文章目录 Windows平台MinGW GCC编译并使用C++ Boost 前提 编译Boost为动态链接库 使用编译的Boost动态 ...

  3. Linux安装GCC+升级GCC流程详解

    GCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分.GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux.BSD.MacOS X等)采纳为标准的 ...

  4. linux怎么用gcc运行程序设计,linux应用程序设计--GCC程序编译

    GCC程序编译 linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作之一.GCC可以在多种硬件平台上编译出可执行程序,其执行效率与一 ...

  5. Linux系统下GCC编译错误:“undefined reference to ‘sqrt‘”

    Linux系统下GCC编译错误:"undefined reference to 'sqrt'",解决方法:-lm 数学函数sqrt()位于libm.so库文件中(这些库文件通常位于 ...

  6. linux下编译安装gcc,Linux编译安装GCC 5.1.0

    Linux下编写C/C++程序自然缺不了一个优秀的编译器,Linux下比较常见的自然是GCC了.2015年4月下旬GCC也出到了5.1.0版本,对于C++11/14也有了更好的支持了.因为最近在学习O ...

  7. Linux装c编译器gcc,c编译器进阶之路,linux下的gcc c编译器使用教程

    c编译器的重要性不言而喻,从往期c编译器文章中,如c编译器优化.选定c编译器等,想必大家对c编译器均已有所了解.往期文章中,小编主要从宏观方面为大家讲解c编译器,此外对于gcc c编译器的讲解也大多基 ...

  8. dll = MinGW gcc 生成动态链接库 dll 的一些问题汇总

    MinGW gcc 生成动态链接库 dll 的一些问题汇总 https://blog.csdn.net/liyuanbhu/article/details/42612365 网络上关于用 MinGW  ...

  9. 《Linux编程》学习笔记 ·002【Linux常用工具GCC、GDB、Make】

    注:前言.目录见 https://blog.csdn.net/qq_44220418/article/details/108428971 文章目录 一.GCC编译器 1.GCC编译程序的流程 2.GC ...

最新文章

  1. java线程-保护性暂停(wait,notify实现)
  2. 数据结构之链表反向打印
  3. c# 经典521例(2)
  4. 计算机教室要配备空调吗,孩子们教室里的空调 到底要不要装?能不能装?
  5. vssver2.scc 文件是干啥的?
  6. Intellij IDEA中生成jar包
  7. Xshell上传、下载文件到linux
  8. 如何用计算机打出love,游戏中名字的LOVE怎么用符号打出来?
  9. python算法与数据结构-插入排序算法
  10. 前端学习(1818):前端面试题之封装函数之进行字符串驼峰的命名
  11. java 多线程的同步问题_java多线程解决同步问题的几种方式,原理和代码
  12. 阿里巴巴数据产品经理工作(总结篇)
  13. 深入PHP内核之ZVAL
  14. SharpDevelop--一款很不错的.NET开发工具
  15. 分布式系统的Raft算法 1
  16. 利用ACIS、HOOPS开发三维软件
  17. 如何把播放器转换成HTML5,Chrome把普通flash播放器转变成HTML5播放器插件:HTML5ify...
  18. C语言社区水电费管理系统,C语言水电费管理系统.doc
  19. python定时发qq消息_Python如何实现定时发送qq消息
  20. 矩阵分解及其Eigen实现

热门文章

  1. Codeforces903E Swapping Characters
  2. 如何让shell脚本自杀
  3. gitlab根据hook钩子自动化部署
  4. 【HNOI2017】影魔
  5. 浏览器css bug及bug解决方法
  6. 精简DropDownList用法
  7. 备忘:SharePoint默认的欢迎WebPart中超链接样式
  8. 从零开始学前端:OPPO商城轮播图 --- 今天你学习了吗?(CSS:Day23)
  9. net.conn read 判断数据读取完毕_单方验方|如何应对千万级工商数据抓取(一)
  10. Python使用UDP协议实现局域网内屏幕广播