分类: C/C++
2009-01-04 14:12:40
特别说明: 鉴于时不时的有人问关于用什么编译器的问题,我翻译了Bjarne Stroustrup主页上compilers栏目的一篇文章,希望对大家有点指导意义。 这个翻译稿的粘贴过程中失去了所有超级连接(pfan提供的编辑功能不够好),我只好另外在旁边附加上,抱歉。 另外,为了避免重复发贴,我把本站sarrow原来的相关文章也复制过来,供彷徨中的朋友参考。 一个C++编译器的不完全列表 2008年11月18日更新 我(Bjarne Stroustrup ) 常常被提问建议的C++编译器,但是我不做建议,因为那样看起来很像站在商战的某一边。况且,我并不了解每一个C++编译器,仅仅知道C++编译器多如牛毛而已。一般而言,我使用半打(6个)编译器,但这充其量也仅仅不过是表面文章而已。 我建议人们选用一个编译器时认真考虑它跟标准的一致程度。如果可能,避免使用任何不太符合ISO标准或者不支持标准库某项实现的编译器。所有主要C++编译器供应商的最新版本都做得不错。 如果你是新手,不知道怎么识别一个编译器是否合适,试试编译下面这个程序: #include #include using namespace std; int main() { string s; cout << "Please enter your first name followed by a newline\n"; cin >> s; cout << "Hello, " << s << '\n'; return 0; // 该返回语句可以不要 } 如果一个编译器不能处理这么简单的程序,那它不适合用来学习标准C++。(如果你剪切和粘贴以上代码,小心#include 指令后的”小于号”). 尽管现在这些细节问题早已经陈旧,这里有一篇很长的文章论述一致性问题 http://www.cuj.com/roundup/a.htm和boost.org'的编译器状态页 。一致性仅仅是编译器质量的一项指标(产生代码质量、出错信息、编译速度、跟开发工具集成、支持程度、向后兼容这些都是其他衡量指标),不过一致性很重要的一项。使用某供应商的语言扩展特性和非标准特性限制了你的代码可移植性而且妨碍你选择一个新供应商的产品。 大多数编译器内嵌在软件开发工具框架和库里面。这些框架、环境和库对你可能非常有用,但是记住使用它们会把你锁定到单一供应商,而且一些应用存在严重的运行性能问题。 当在网上寻找C++的时候,你会发现很多信息”隐藏”在各自产品下面。事实上,我用google.com寻找C++编译器比直接联系C++编译器供应商更方便。在此,忽略市场商标,我列出很多C++编译器的提供者。 一些编译器可以免费下载(尝试商业应用前要看看他们的条件/许可证): Apple C++ http://developer.apple.com/tools/macosxtools.html. OS X开发工具CD上也有。 Bloodshed Dev-C++ /devcpp.html. 一个基于GCC(Mingw)的IDE. Borland C++ Cygwin (GNU C++) Digital Mars C++ MINGW - "Minimalist GNU for Windows" . 另外一个GCC for Windows版本,包含了一个免费的(非GPL)w32api。 DJ Delorie's C++ development system for DOS/Windows (GNU C++) GNU CC source IBM C++ 用于IBM power, System Z, Bluegene, and Cell. Intel C++ for linux The LLVM Compiler Infrastructure (基于GCC). Microsoft Visual C++ 2008 Express edition . Sun Studio http://developers.sun.com/sunstudio. 一些编译器需要支付费用(有些允许试用期内免费下载): Borland C++ CodeWarrior C++ (正式名字是Metrowerks),支持很多平台 Comeau C++ 支持很多平台 Edison Design Group C++ Front End - 很多C++编译器公用商使用它 Green Hills C++ 用于很多嵌入式系统平台 HP C++ for Unix 和HP C++ for OpenVMS . Intel C++ 支持Windows, Linux, 和一些嵌入式系统 Mentor Graphics/Microtec Research C++ 用于很多嵌入式系统平台 Microsoft C++ Paradigm C++ http://www.devtools.com/, 用于x86的嵌入式系统 The Portland Group C++ (用于奔腾架构处理器的并行) SGI C++ , 优化编译器 Sun C++ WindRiver's Diab C++ , 很多嵌入式系统使用。 对于我而言,让该列表完整和保持最新状态不太可能。C++世界太大,新东西出现太快。对于那些我未能列出来的供应商表示歉意,我知道会有一些,如果你有一个连接并认为应该在此列出来的话,请给我写信:bs at research.att.com。再次重申:我仅仅列出编译器,我并不是赞成它们。而且对于每个人而言,没有哪种编译器最好,不同的人有不同的需要。 C++编译器的其他列表: The open directory project Compilers.net : 免费的C和C++编译器列表。 一个过滤器可以用来改善很多编译器的错误信息,见STLfilt . sarrow朋友关于 <<免费的C/C++集成编译环境(IDE)>> 的文章摘录如下: 连接: 更全的列表以及下载链接见: 题头: 献给为编译环境而烦恼的同志们。 正片开始: Dev-C++ 本软件就不用说了,这是pfan论坛上的首选IDE环境;他默认安装minGW作为编译器——就是windows化了的GCC编译器。版本应该是3.4; 由于其编辑器使用简单,而内核gcc3.4对c99和c++2003的支持度都比较高,所以,这个软件比较适合标准C/C++初学者!除了支持外部库,Dev-C++还支持自己的开发包,你可以从升级“包”这个功能上获得许多有用的东西; 你可以在获得它的下载。 WxDev-C++ 不知道是英雄落幕还是怎么的?Dev-C++已经停止更新了!最新的版本应该是4.9.9.2——不更新,这个就计较郁闷了!不过,另一波人把这个项目接了过来,在Dev-C++的基础上添加了很多的东西,比如RAD工具(就是像VB那样,能快速通过拖拉就可以做win32程序界面的工具),还修改了前作 Dev-C++的一些bug。 还有就是它兼容vc6、vc7、vc8的工程设置——就是说,vc6、vc7、vc8的工程可以照搬到WxDev-C++下来使用! 当然,最大的好消息,就是,这么好的工具竟然也是免费的! 下载: Code::Blocks 这个有着怪名字的东西,是个比较新的免费IDE,当前是面向C/C++使用而开发的工具;注意,这个是开源跨平台的哦!这个软件是用插件式构架的,那么这个软件就设定成可以非常的个性化! 由于它支持多编译器,所以,它没有默认绑定编译器;由于它支持的编译器比较多,我就挑点讲: minGW的GCC编译器、vc7还有vc8以及Borland C++ 5.5; 下载: Ultimate++ 这个软件也式跨平台的——就我看来,其最大的特点,就是有自己的GUI库! 下载: Eclipse 这个巨大的东西,也是跨平台的——不过这个东西太大了点,我也就不说了——不符合简单易学的规则。 下载: VC 最后,哈哈,因为个人的原因,我把Microsoft公司的VC产品放在最后。VC6、VC7、VC8者是当前还活跃的3个ms的C/C++编译环境——不过可惜的是,他们都不是免费的! 在这里提VC的原因呢,有两点: 1. 虽然他们不免费,不过,在中国来说——等于免费,原因吗?大家心知肚明,我就不说了! 2. MS不提供大餐,甜点还是有的: Microsoft Visual C++ Toolkit 2003 这个编译工具包——免费! 然后Microsoft Visual C++ 2005也有一个免费版!当然不是全功能的,不过对于初学者,也是够用了! 尾声: 对于NB的人来说,有没有IDE都一样!IDE只是快速开发的工具而已! 这里,我要说说为什么把ms公司的VC系列放最后的原因:竞争才有进步,而ms的公司的策略,就是只让自己独活;像VC系列IDE这样大包干的做法,我是认为不正确的——一个把更多的选择权留给使用者。 我(Chipset)使用C/C++编译器和IDE的历史: 我个人只用过少数几种编译器和IDE,简单描述一下感受。 1、VC++6.0 + SP6 这个IDE在Win32上很流行,尤其在恋古情节和盗版盛行的中国教育界。 VC++6.0对C90标准支持的不错,但是对C99和C++98都支持的很弱。VC++6.0本身的bug非常多,不过调试功能相当不错,可惜这点长处对我来说基本没有什么意义,因为我从来不用调试器。 VC++6.0的缺点非常明显,主要是库函数很多错误,存在严重问题,由于97年底竣工,不支持C99和C++98,不过我们不得不承认VC++6.0 + Windows98系统简直是C程序员的绝配。 如果您对VC++6.0仍旧情有独衷,迅雷搜索一下,有很多下载地址。 2、Dev C++ 4.9.9.2 说真的,这是一款非常好的IDE,内嵌gcc编译器(含g++3.4.2),体积小,安装完毕就50MB的空间,对C99和C++98/03支持都很好,而且可以编写Windows程序,在Win32平台上尤其适合初学者。缺点是升级困难,因为它06年后已经不再升级,不过令人欣慰的是WxDev-C++继承了它的脚步。 3、VS2005 这是一款重量机的IDE(内嵌多种编译器,包括MS C++8.0),在硬盘上安装后肯定上1GB,体积庞大,即使你单独安装.net框架 + 全局搜索环境 + VC++8.0体积也不会下1GB。但是功能确实强大,基本上一应俱全,可以编写C/C++/Win32/MFC/ATL等各种应用程序。调试功能十分强劲,很明显,比VC++6.0无论从体积上还是库的全面上都有质的飞跃。如果你是C++初学者,我并不建议你使用它,因为实在太大了,而且对纯C++程序的编译能力略逊于Dev C++ 4.9.9.2(g++3.4.2),生成代码质量不及Borland C++。 4、Intel C++9.1/10.020 必须把Intel C++编译器集成到VS2005中使用(您可以想想体积多么庞大),否则没有办法安装。尽管Intel C++编译器编译优化后生成代码质量更高,而且可以导入Visual Studio的工程,但我仅仅用于测试,我仅仅用命令行编译(您也可以用IDE编译和调试),后来挥泪卸载了它。 5、Code::blocks8.02+MinGW(gcc3.4.5) 我不得不说,Code::block8.02简直就是一款划时代的开源IDE,除了支持多种平台,几乎可以满足最苛刻的商业应用,支持10多种编译器,支持VC++工程、Visual Studio工程和Dev C++工程导入。配合gdb调试器,调试功能也很丰富,调试功能略逊色于Visual Studio系列,但是个性化十足,支持添加各种组件开发,例如QT,wxWidgets等等,只要您能想像的出来,google一下几乎都能找到怎么添加。如果您是初学者,鄙人强烈建议你选用这款Code::blocks8.02+MinGW(gcc3.4.5),因为它体积不太大,安装后大约100MB而已,就算您懒得添加组件,也能开发C/C++/Win32应用程序,而且对C90/99, C++98/03支持都很好。 6、Code::blocks8.02+gcc4.3.2+boost1.37 这个我就不说了,本站有我的一篇文章讲述安装配置的,详细的情况见我的博客。 7、gcc4.3.2(Linux) gcc编译器不仅仅用于PC也可以用于嵌入式系统和服务器级别的C/C++程序编译,配合Open MP可以开发编译并行程序,用于高性能计算。使用Linux系统和Unix系统的朋友不少选gcc做C/C++编译器。 |