常用编译器

一个现代编译器的主要工作流程:

  源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。

GCC家族:

    Cygwin  

    Mingw32

    DJGPP

    Dev-C++(Mingw32)

GNU GCC2.95.5~3.0.0.4版本

GNU C++

       g++是一个开源的C++编译器,GCC3.3对标准化C++的支持达96.15%。

       值得一提的是,gcc是gnu c的编译器, g++是gnu c++的编译器, 而egcs(Enhanced GNU Compiler Suite)可以认为是gcc的改进版。目前gcc已经改名,从原来代表GNU C Compiler改变为代表GNU Compiler Collection。而MinGW或Cgywin,是在windows平台上的gnu c/c++编译器,以及库文件,运行环境的集合。

       在GCC家族中GNU GCC是根本,其它的编译器版本都是从它导出的。其中,Cygwin和Mingw32都是WIN32平台下的编译器,DJGPP是DOS下的32位编译器。大家所熟知的DEV-C++充其量只是GCC的一个外壳,它所自带的编译器就是Mingw32的一个版本。这些GCC的版本中,Cygwin是最大的,它与其说是一个编译器,倒不如说是一套编程工具。它不仅有编译器,还有其它很多的工具。其实,它就是一个UNIX系统在WIN32平台上的实现。实现了大多常用的UNIX工具,最近的版本中连Apache这样的“工具”都集成进来的。不过,Cygwin虽然功能强大,但它却不是很易用(和UNIX相似,熟悉UNIX的人用它可以很快上手),因为太多其它的工具分散了人们的注意力。相比之下Mingw32就要好用得多,它只有最基本的几个编程工具(只可惜它不自带GDB)。GCC中并不只是C/C++编译器,其中还有很多其它的编译器如JAVA,Fortran,ADA等。它是一个编译器集合,不过有些编译器只能在UNIX系统上用。


MS家族:

   MSC 5.0、6.0、7.0

   MSQC 1.0、2.5

   MSVC 1.0、4.2、6.0、7.0

Visual C++

       VC++6.0对标准化C++的兼容仅达83.43%。

        它是VisualStudio、VisualStudio.net 2002、VisualStudio.net 2003、VisualStudio.net 2005的后台C++编译器。随着Stanley Lippman等编译器设计大师的加盟,它变得非常成熟可靠了。Visual C++7.1对标准C++的兼容性达到98.22%。


Borland家族:

   TC 1.0、2.0

   TC++ 1.01、3.0

   BC 3.0、3.1、4.0、4.5、5.0、5.02

   BCB 3.0、5.0、6.0

Borland C++

       该编译器以速度快、空间效率高而著称。它的5.5版本对标准化C++的支持达92.73%,而官方称100%符合ANSI/ISO的C++标准和C99标准。

      它是Borland公司开发的,是Borland C++ Builder和Borland C++ Builder X这两种IDE的后台编译器。


其它:

Intel C/C++ 5.0

Watcom C/C++ 11.0、11.0c

VectorC 1.3.3

IBM VisualAge for C++

DigitalMars C/C++

KAI C/C++ 4.03f for RedHat 7.2

Lcc4.1

LCC-WIN32 2001-09-25~2002-04-28日版

Small C

CC386

Pacific C

       Intel C/C++大家一看名称就知道是Intel的东西,它和VC6完全兼容,不过要挂在VC6下才能用。Watcom C/C++是早先编译器四国大战中的一员,原本是很不错的东西,可惜战略不对,现在已不见声息了。倒是以它为基础的一个OpenWatcom现在还在奋战。VectorC是我近日才发现的一个好东东,它是个纯C的编译器。IBM的VisualAge for C++原本是IBM想用来淌C++编译器这片浑水的东西,不过IBM的战略改了,它就被放弃了。DigitalMars C/C++的前身的Symantec C++(它也是编译器四国大战中的一员),不过现在Symantec不做了,于是它的作者就把它改成了DigitalMars C/C++开放给大家使用。以上这些都是WIN32平台上的东西。KAI C/C++是个很强大的C/C++编译器,它是个多平台的编译器。不过现在被INTEL收购了,已经停止开发了。Lcc4.1是个纯C的编译器它是开放源代码的。不过不怎么好用。LCC-WIN32是一个在LCC基础上开发的C语言的集成开发环境,很好用,而且有很详细的资料,FREE!Pacific C是一个纯DOS的C的集成开发环境,就不多说了。Small C CC386都是开放源代码的编译器,它们都很简单,应用来给大家学习编译器的。


C的解释器:

Quincy

Eic

CINT

Quincy Eic CINT都是C的解释器,是用来让大家学习C语言的其中CINT的功能很强大,还支持一些C++的特性。



Visual Studio:

        Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview--CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持 IBM DB2和Oracle数据库。

 

C++ Builder:

        C++ Builder是由Borland公司推出的一款可视化集成开发工具。C++ Builder具有快速的可视化开发环境:只要简单地把控件(Component)拖到窗体(Form)上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;C++ Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件;C++ Builder具有一个专业C++开发环境所能提供的全部功能:快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等。它实现了可视化的编程环境和功能强大的编程语言(C++)的完美结合。

 

Turbo C:

        Turbo C是美国Borland公司的产品,Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套 Turbo系列软件, 如Turbo BASIC, Turbo Pascal, TurboProlog, 这些软件很受用户欢迎。

 

Dev-C++:

        Dev-C++是一个Windows环境下C/C++的集成开发环境(IDE),它是一款自由软件,遵守GPL许可协议分发源代码。它集合了MinGW等众多自由软件,并且可以取得最新版本的各种工具支持,而这一切工作都是来自全球的狂热者所做的工作。Dev-C++是NOI、NOIP等比赛的指定工具,缺点是Debug功能弱。Dev-C++ 最新版本:5.6.0。

 

gcc(GNU编译器集合):

        GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。GCC是自由软件发展过程中的著名例子,由自由软件基金会以GPL协议发布。GCC是大多数类Unix操作系统(如Linux、BSD、Mac OS X等)的标准的编译器,GCC同样适用于微软的Windows。GCC支持多种计算机体系芯片,如x86、ARM,并已移植到其他多种硬件平台。GCC原名为GNU C编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,并支持处理C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go等。

 

g++:

gcc and g++分别是GNU的c & c++编译器

gcc/g++在执行编译工作的时候,总共需要4步

⒈预处理,生成.i的文件[预处理器cpp]

⒉将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]

⒊由汇编变为目标代码(机器代码)生成.o的文件[汇编器as]

⒋连接目标代码,生成可执行程序[链接器ld]


文章出处:https://blog.youkuaiyun.com/hurlan/article/details/21084065

<think>好的,用户现在问的是关于Linux常用编译器。我需要先回想之前的问题历史,用户之前问过如何将Qt项目迁移到VS2017,现在转向了Linux环境下的编译器,可能是在跨平台开发或者想学习Linux下的开发工具。 首先,用户可能是开发者,可能对编程有一定的基础,但可能对Linux环境不太熟悉。需要介绍常用编译器,可能包括GCC、Clang这些主要的,以及一些其他工具如make、CMake。需要分清楚编译器和构建工具的区别,但用户可能不太清楚,所以需要明确说明。 接下来,用户可能需要知道每个编译器的特点、安装命令和使用示例。比如GCC是Linux默认的,Clang以错误信息友好著称,Intel编译器优化性能好,但可能用户更多是普通开发者,可能更关注前两者。 还要考虑是否需要提到调试工具如GDB,虽然严格来说不是编译器,但开发过程中常用,用户可能感兴趣。另外,构建工具如make和CMake虽然不是编译器,但编译过程常会用到,需要简要说明它们的作用。 需要结构清晰,分点介绍每个编译器,给出安装命令和简单例子,这样用户可以直接参考使用。同时,注意使用中文,避免专业术语过于晦涩,但保持准确性。例如,解释GCC支持的语言,Clang的优点,Intel编译器的适用场景。 另外,用户可能对如何选择编译器有疑问,可以在总结部分给出建议,比如推荐GCC和Clang,根据项目需求选择。可能还需要提到交叉编译的情况,但可能用户暂时不需要,可以简单带过。 最后,检查是否有遗漏的重要编译器,比如嵌入式开发可能用的工具链,但可能用户的问题比较基础,所以保持主要几个即可。确保信息准确,比如安装命令在主流发行版中适用,如Ubuntu、CentOS等。</think>### Linux常用编译器介绍 --- #### **一、编译器核心工具** 在Linux开发中,编译器是代码转换为可执行程序的核心工具。以下是常用编译器及其特点: --- ##### **1. GCC(GNU Compiler Collection)** - **定位**:Linux默认编译器,支持C、C++、Fortran等语言。 - **特点**: - 稳定且兼容性强,适合大多数项目。 - 支持多平台交叉编译。 - **安装命令**: ```bash # Ubuntu/Debian sudo apt install gcc g++ # CentOS/RHEL sudo yum install gcc gcc-c++ ``` - **使用示例**: ```bash gcc hello.c -o hello # 编译C程序 g++ hello.cpp -o hello # 编译C++程序 ``` --- ##### **2. Clang/LLVM** - **定位**:GCC的替代品,以更清晰的错误提示和模块化设计著称。 - **特点**: - 编译速度较快,错误信息更易读。 - 与LLVM工具链集成(如静态分析工具`scan-build`)。 - **安装命令**: ```bash # Ubuntu/Debian sudo apt install clang llvm # CentOS/RHEL sudo yum install clang llvm ``` - **使用示例**: ```bash clang hello.c -o hello # 编译C程序 clang++ hello.cpp -o hello # 编译C++程序 ``` --- ##### **3. Intel C++ Compiler(ICC)** - **定位**:针对Intel CPU优化的高性能编译器。 - **特点**: - 生成代码效率高,适合科学计算或性能敏感项目。 - 需商业许可(社区版免费但有功能限制)。 - **安装**: - 从Intel官网下载安装包,或通过包管理器配置仓库后安装。 --- ##### **4. 其他编译器** - **TinyCC(TCC)**:轻量级C编译器,适合快速测试和小型项目。 ```bash sudo apt install tcc # Ubuntu安装 ``` - **Open64**:开源编译器,支持多核优化(常见于嵌入式开发)。 --- #### **二、构建工具与辅助工具** 编译器通常与构建工具配合使用,提升开发效率: --- ##### **1. Make** - **作用**:通过`Makefile`自动化编译流程。 - **示例**: ```makefile # Makefile示例 all: hello hello: hello.c gcc hello.c -o hello clean: rm -f hello ``` - **使用**: ```bash make # 编译 make clean # 清理 ``` --- ##### **2. CMake** - **作用**:跨平台的构建系统生成器,可生成`Makefile`或VS项目文件。 - **安装**: ```bash sudo apt install cmake # Ubuntu sudo yum install cmake # CentOS ``` - **使用示例**: 1. 编写`CMakeLists.txt`: ```cmake cmake_minimum_required(VERSION 3.10) project(Hello) add_executable(hello hello.c) ``` 2. 生成并编译: ```bash mkdir build && cd build cmake .. && make ``` --- ##### **3. Autotools(GNU Build System)** - **定位**:传统Linux项目的构建工具(如GNU软件)。 - **流程**: ```bash ./autogen.sh # 生成configure脚本 ./configure # 检测系统环境 make # 编译 sudo make install # 安装 ``` --- #### **三、调试与代码分析工具** - **GDB**:GNU调试器,用于定位程序崩溃或逻辑错误。 ```bash gdb ./hello # 启动调试 ``` - **Valgrind**:内存泄漏检测工具。 ```bash valgrind --leak-check=yes ./hello ``` - **Clang静态分析器**: ```bash scan-build clang hello.c -o hello ``` --- #### **四、如何选择编译器?** | **场景** | **推荐工具** | |---------------------------|----------------------------------| | 通用C/C++开发 | GCC 或 Clang | | 需要清晰的错误提示 | Clang | | 高性能计算或Intel CPU优化 | Intel C++ Compiler | | 嵌入式或交叉编译 | GCC交叉编译工具链(如`arm-linux-gnueabi-gcc`) | --- #### **五、总结** - **主要编译器**:GCC(默认)、Clang(现代化替代)、ICC(高性能优化)。 - **构建工具**:Make(基础)、CMake(跨平台推荐)、Autotools(传统项目)。 - **调试工具**:GDB、Valgrind、Clang静态分析器。 根据项目需求选择工具链,通常优先使用GCC或Clang,结合CMake管理复杂项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值