好用的C++编译器,c++编译软件哪个好

好用的C++编译器,c++编译软件哪个好,推荐几款C/C++的编译器、编译环境(非常全面的比较)

本文主要介绍C/C编译器的一些容易混淆的概念。在这里,我们就和大家分享一下,有需要的朋友可以参考一下。

C/C编译器有哪些?

首先我们是最知名的朋友,MSVC、GCC、Cygwin、MingW(Cygwin和MingW的英文发音),还有一些小团体和菜鸟,比如ICC(Intel C/C编译器)、BCC(Borland C/C编译器,正在消失)、RVCT(ARM的assembly /C/C编译器,在ARM内置的IDE——RVDS中)、Pgi编译器.其实还有一长串。我们只需要熟悉常用的最强大的。

主流C/C编译器|编译环境介绍

MSVC

MSVC是微软视窗平台上的Visual Studio自带的C/C编译器。

优点:对Windows平台支持好,编译速度快。

缺点:对c的新标准支持很少。

GCC

GCC原名GNU C编译器,逐渐支持更多语言(C、Fortran、Pascal、Objective-C、Java、Ada、Go等。),于是就变成了GNU编译器集合(GNU Compiler Suite),GNU engineering开发的一套编译器,支持多种编程语言。GCC是自由软件发展中一个著名的例子,由自由软件基金会以GPL协议发布。它是大多数类Unix(如Linux、BSD、Mac OS X等)的标准编译器。),并且适用于Windows(由其他移植项目实现,如MingW、Cygwin等。).GCC支持多种计算机系统芯片,如x86和ARM,并已移植到其他硬件平台。

优点:类Unix标准编译器支持多种语言和交叉编译。

缺点:默认不支持Windows,需要第三方迁移才能用于Windows。

Cygwin

Cygwin是Windows下的类Unix仿真环境,具体来说就是类Unix接口的重定向层(OS API,命令行)。其目的是在不修改软件源代码的情况下,仅通过重新编译,将类Unix系统上的软件移植到Windows上(这种移植可能不是严格意义上的无缝移植)。它始于1995年,是天鹅座软件公司工程师史蒂夫张伯伦的一个项目。

与GCC的关系:Cygwin是让Windows拥有类Unix环境而不是编译器的软件,GCC是安装在Cygwin上的编译器。

优点:比MingW可以移植到Windows的软件更多,Linux界面模拟比MingW更全面。

缺点:软件操作依赖cygwin1.dll,速度受点影响。

注意:类Unix模拟环境不是Unix虚拟环境。很多讨论都声称Cygwin在Windows上尽可能模拟了一个类Unix的环境,这很容易让人产生误解,好像一个类Unix的elf程序可以直接在安装了Cygwin的Windows上运行。Cygwin和Wine的想法不一样。在Windows Cygwin上,可以像Unix一样使用命令行和程序,但是elf等非exe格式的程序是无法在Cygwin上运行的,所以Cygwin与Unix虚拟机和Wine完全不同。称之为类Unix环境,模拟是非虚拟的,具有局限性和选择性。请不要误会。

MingW

MingW(Minimalist GNU on Windows)是Linux/Windows下的编译环境,可以通过头文件将软件源代码中类似Unix的OS API调用翻译成相应的Windows API调用,其用途与Cygwin相同。从而可以将Linux上的软件编译成exe,不需要修改源代码就可以在Win下直接执行。

与GCC的关系:MingW是编译环境,不是编译器,GCC是MingW的核心组件。

优点:C/C源代码在Win下可以像Linux一样编译,可以说是GCC的Win版本。与Cygwin相比,它产生的Windows PE程序不依赖任何第三方库,比Cygwin更纯粹,理论上更快。

缺点:编译速度和编译的程序在算法上可能比MSVC慢。

注意:与Windows下的其他编译器不同,MinGW几乎完全兼容Linux下广泛使用的GNU,这意味着如何编译Linux下的源代码,在MinGW完全可以用同样的方式编译。一些Linux下的开发者(如开源阵营)通常只提供Linux下编译的源代码,而不提供windows下的(这可能与他们对Windows操作系统不熟悉有关),但有相当多的用户需要在Windows下编译和使用这些源代码。在这种情况下,Windows用户如果想用VC、BC等编译器编译源代码,就必须重写Makefile(各种编译器支持的Makefile不尽相同),即使工作量比较大也很难保证不会出错。MinGW的出现提供了两个平台下的“跨平台编译方案”。MinGW与微软合作,甚至。/configure可用。与GNU不同,MinGW编译并生成可执行文件(。exe)或库文件(。dll,lib) 3354。但是,编译过程中的中间文件仍然是。o文件,不是。obj文件(当然没关系,中间文件编译完就没用了)。

在我们比较Cygwin和MingW之前,请澄清一点,那就是,

如何从Unix-like系统向Windows系统移植软件?

现代操作系统包含了Windows和Linux的基本设计理念,比如进程线程地址空间虚拟内存,这些都是类似的。它们上的程序不兼容,主要是因为它们在这些功能的具体实现上存在差异:

首先是可执行文件的格式。Window使用PE格式并要求。exe作为后缀,而Linux使用Elf。

其次,操作系统API是一样的。比如Windows使用CreateProcess()创建进程,而类Unix系统使用fork()。还有很多其他的比如spawn,signals,select,sockets等等。

经过分析,我们可以知道将类Unix系统上的软件移植到Windows上有几种思路:

第一种方法是修改软件源代码,重新编译。这种方法最蠢,需要修改大量类Unix环境下的软件,编译目标平台的可执行文件格式。

第二种:不修改软件源代码,只是悄悄用WinAPI替换了类Unix的接口调用,仍然需要重新编译生成目标平台的可执行文件格式。

三、无缝移植的运行环境,不需要重新编译,在一个OS上建立另一个OS的应用软件虚拟环境(与虚拟机不同),比如Wine(Windows上的可执行程序直接原样移植到Linux上)。

Cygwin与MingW的比较

作为编译环境,它们都依赖于GCC。

它们被用作编译环境和交叉编译,基本上是因为GCC编译器的支持。他们的工作是为GCC编译清除类Unix和Windows之间操作系统API差异的障碍。

两者都必须重新编译移植,生成的程序都是PE格式。

两者都不能让Linux下的程序直接运行在Windows上(无缝迁移),必须通过源代码重新编译。有人声称cygwin支持rpm的压缩包。注意rpm的压缩包其实是src.rpm,是内部源代码而不是elf格式。cygwin不支持常规rpm包的安装。

Cygwin运行在Windows上,MingW运行在Linux或Windows上。

Cygwin是运行在Windows上的类Unix环境,MingW是运行在Linux或Windows上的Windows PE编译环境。

MingW中的子项目MSys和Cygwin更像

Cygwin不仅完全模拟了Linux的界面(命令行、OS API),还为运行在其上的Windows程序提供了很多现成的软件,更像是一个平台。MingW还有一个子项目叫MSys(Minimal SYStem),主要提供一个模拟Linux的Shell和一些基本的Linux工具。因为仅仅用GCC编译一个大型程序是不够的,还需要Autoconf等工具来配置项目,所以一般Windows下Linux下的ffmpeg等大型项目的编译都是通过Msys来完成的,当然Msys只是一个辅助环境,基础性的工作都是由MingW来完成的。

实现思路有同有异

Cygwin和MingW都是第二种软件移植思路。当然,两者还是有区别的,区别在于“替换”的方法。在编译Cygwin时,程序仍然调用Linux中的系统API,但是将类Unix接口链接到自己的cygwin1.dll,然后在cygwin1.dll再次调用Windows API,cygwin1.dll调用Windows的相应实现将结果返回给程序。也就是说,他们编写了一个基于Win32 API的Unix系统API重定向层,所以用它移植的软件全部依赖于cygwin1.dll。MingW在编译时,通过一个独特的WinAPI头文件,将类Unix调用替换为WinAPI,用它移植的软件可以直接运行在Windows平台上,不需要依赖第三方库。为了达到只通过重编译就能移植类Unix软件取胜的目的,Cygwin在运行时偷梁,MingW在编译时偷梁。

可以发现Cygwin生成的程序仍然有fork()这样的Linux系统调用,但是目标库是cygwin1。而MingW生成的程序都使用KERNEL32导出的标准Windows系统API。

使用方式有同有异

将类似Unix的软件移植到Windows是两者的主要目标。除此之外,顺带一提,MingW和Cygwin可以用于跨平台开发等事情。

Windows Cygwin:可以在Windows上学习Linux命令,在Windows上开发Linux软件,包括用GCC编译elf(交叉编译)。

Linux MingW:可以在Linux上开发Windows软件,包括用GCC编译exe(交叉编译)。

Windows/Linux MingW:可以摆脱MSVC的“羁绊”,用GNU的免费软件编译生成不依赖第三方库的纯Windows PE格式(exe)二进制程序。

Cygwin重量级,MingW轻量级

和MingW的思路一致,两者相比,Cygwin是重量级的(下载需要50M以上,数百兆不等,安装后占用空间可达1G),MinGW是轻量级的(只需要下载20M文件,安装后70M左右),纯粹从体积上来说。另外,Cygwin现在据说还没有完全自由。

网上的对比列表(UnxUtils自行忽略,仅供参考)

功能

UnxUtils

MinGW

Cygwin

设计原理

原始的

原始的

模仿

操作依赖性

自主的

依赖msys.dll(你必须依赖它吗?值得验证)

依靠cygwin.dll

运行性能(比较)

最快的

媒介

慢的

DOS执行

不能

更新速度

停止更新。

慢的

基本gcc同步

外壳命令

更多

较少的

更多

乌梅

WindowsNT

明W32_NT-5.1

CYGWIN_NT-5.1

包封/包围(动词envelop的简写)

与Windows相同

与Windows相同

与Windows不完全相同

丙:/

丙:/

/

c:/文档和设置/测试

/home/test:没有这样的文件或目录

/主页/测试

显示当前工作目录

C:/bin

/usr/bin

/主页/测试

df

无法读取已挂载文件系统的表

没有

/cygdrive/c

视觉识别系统

没有

没有

Gcc套件

没有

开发库

没有

WinAPI

可移植性操作系统接口

图形库

没有

GTK/QT

GTK/QT

可运输性

没有

Win32API不可移植。

无缝移植

程序运行

没有

原始的

模仿

程序依赖性

没有

没有

cygwin.dll

程序性能(比较)

没有

更快(比VC和Linux下的gcc慢)

慢(比java快)

小膨胀

一个编译器编译的时候,可以调用编译其他编译器生成的lib和dll吗?

不是,名字***不一样,就是名字混淆的方式不一样。

15款最好的C/C++编译器和集成环境

编程语言很多,新的语言层出不穷。但是C和C作为两种历史悠久的语言,经过了很长时间的考验,仍然是需要提升到精通的语言。它们有很多优秀的特性,更高效的功能和支持工具。现在,这两种语言仍然如此活跃,因为它们的rubout函数集提供了极大的安全性和可靠性。

欲善其事,必先利其器。今天介绍一些优秀的面向C和C的集成开发环境(IDE)和编译器,IDE主要提供程序员在开发时的各种软件应用组件。最流行的ide都有一个共同点,就是非常吸引人的用户界面。这里我们收集了一些最好的C和C的ide和编译器。

1) kDevelop

Kdevelop是一个用于C/C和其他语言的开源插件可扩展IDE。它基于KDevPlatform,kdev platform是一个开源的程序集,可以作为IDE的基础。

KDevelop-Project诞生于1998年。其目的是为KDE提供一个易于使用的集成开发环境。此后,KDevelop IDE以GPL发布,支持多种编程语言。

是一个用于C,C,Python,JavaScript和PHP的跨平台IDE

官方网站:https://www.kdevelop.org/

2) Anjuta

Anjuta Devstudio是另一个优秀的开发环境,拥有很多优秀的功能,包括项目管理、应用向导、交互式调试器、源代码编辑器、版本控制、GUI设计工具、性能分析器等等。该IDE提供了一个超大的用户界面来开发C/C程序。

Anjuta是一个基于GNU/Linux的集成开发环境,提供C和C的编译,最初是为GTK/GNOME设计的,具有很好的编程属性。这包括项目管理、应用程序开发、交互式调试以及强大的代码编辑和语法着色。

Anjuta已经成为Gnome环境下最理想的开发工具。其主要功能类似于KDE旗下的Kdevelop,最新版本为3.2.0。

官方网站:http://anjuta.org/

3) Code Blocks

Code是最流行的免费开源集成环境之一。该集成开发环境包括开发人员需要的所有功能,如高效的用户界面、编译器和调试器等。

官方网站:https://www.codeblocks.org/

4) Visual Mingw

Visual-MigGW是一个极其抽象的开源IDE。它的所有Windows API都变得非常简单,可以快速开发。提供了简化代码和获取C对象的模块,提前准备了使用应用框架的环境。

官方网站:http://visual-mingw.sourceforge.net/

5) Ideone

Ideone是C和C的在线编译调试工具,支持60种其他语言。这个工具提供了许多强大的功能,允许程序员快速高效地编译源代码。

官方网站:https://www.ideone.com/

6) Eclipse CDT

Eclipse CDT是最权威和最流行的IDE,提供了许多高效的功能:支持各种工具链的项目创建和管理、标准make构建、源代码导航、各种源代码知识工具、具有语法突出显示功能的代码编辑器、可视化调试工具、Boaqui内存、寄存器和反汇编查看器。

官方网站:http://www.eclipse.org/cdt/

7) Compilr

编译器是一个在线集成开发工具,它允许用户使用工具编写代码和创建简单的用户界面。这个工具支持很多编程语言,比如C,C,Java,HTML等等。

官方网站:https://www.crunchbase.com/organization/compilr

8) Code Lite

Code lite是另一个优秀的免费开源C和C IDE,它可以运行在所有流行的平台上(Windows、OS X、Linux等)。).

官方网站:https://codelite.org/

9) Netbeans C++

Netbeans工具包括大量适用于C和C语言的项目类型模板。您可以使用动态和静态库来创建C/C应用程序。它包括一系列深受程序员喜爱的功能:代码辅助、编译器配置、单元测试、源代码检查、远程开发和文件导航等。

官方网站:https://netbeans.apache.org/kb/docs/cnd/

编译器:

10) Dev C++

c是一个全功能的IDE,具有以下特点:1)类查看器2)集成调试3)基于GCC的编译器4)项目管理5)编译器6)编辑编译资源文件7)工具管理器8)函数列表。

官方网站:https://bloodshed-dev-c.en.softonic.com/

11) Ultimate++

Ultimate是一个优秀的C开发框架。这个IDE包含了C编程的模块化概念,可以使用GCC、MinGW和Visual C

官方网站:https://www.ultimatepp.org/

12) Digital Mars

DigitalMars是一款高性能的C和C编译器,包含了很多优秀的特性,比如最快的编译/链接时间,强大的优化技术,关联设计,完整的库资源,HTML可读文档,反汇编程序,库管理,资源编译,make等等。有命令行和GUI版本、教程、示例代码、在线更新、标准模板库和许多其他功能。

官方网站:

13) C-Free

C-Free是一个专业的C/C集成开发环境(IDE),可以支持多种编译器。合作伙伴可以使用这个C-Free完成所需的编辑、运行、调试C/C、编译等操作。C-Free可以增强只输入功能,增加语言高亮,代码定位等功能。

官方网站:http://www.programarts.com/cfree_ch/index.htm

14) MinGW

MinGW编译器提供对Microsoft C运行时函数和一些特定语言运行时的访问。

官方网站:http://www.mingw-w64.org/doku.php

15) Tiny C Compiler

Tiny c编译器是最好的C语言编译器之一。它有很多让开发者惊讶的功能。可以在任何地方编译源代码,使用任何C动态库,直接编译执行C源代码,包括完整的C预处理器和GNU类的汇编器。

官方网站:https://bellard.org/tcc/

关于推荐几款C/C编译器和编译环境的文章到此为止(非常全面的对比)。有关C/C编译器的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • vs2015打包安装程序,vs2015程序打包,VS2022实现VC++打包生成安装文件图文详细历程
  • vc++6.0的快捷键,vc 快捷键
  • vc++6.0的快捷键,vc 快捷键,VC6.0常用快捷键大全
  • 绘制圆角矩形的方法,c++ 画矩形,C#画圆角矩形的方法
  • 懒汉式和饿汉式代码,单列模式懒汉和饿汉,C++单例模式的懒汉模式和饿汉模式详解
  • semaphore c#,c++ semaphore
  • semaphore c#,c++ semaphore,C++中Semaphore内核对象用法实例
  • dev-c++使用教程,dev c++安装教程
  • dev-c++使用教程,dev c++安装教程,Dev C++ 安装及使用方法(图文教程)
  • C里面指针常量和常量指针的区别,c++指针常量和常量指针
  • C里面指针常量和常量指针的区别,c++指针常量和常量指针,简单总结C++中指针常量与常量指针的区别
  • com组件初始化失败,c#开发com组件,C++中COM组件初始化方法实例分析
  • c++静态成员变量使用,c++静态成员函数和静态成员变量
  • c++静态成员变量使用,c++静态成员函数和静态成员变量,详解c++ 静态成员变量
  • c++随机函数rand怎么用,c中rand函数产生的随机数的范围是
  • 留言与评论(共有 条评论)
       
    验证码: