您现在的位置是:首页 > 单片机

浅谈GCC编译器

2020-07-18 05:00:59

  首先我们来看一些情况:

  1. 尽管我已经从事这份工作达30年,并且作为一个顾问,我使用过的编译器比任何一个工程师可能都多,但事实是我只对有限的编译器感到不满。不过这就能说明Rowley编译器是一个好的编译器吗?当然他们的网站做得很得体,文档也不错,IDE也很好,然而我从未使用他们的工具去编译链接一个真正的项目,所以我并不真正知道Rowley编译器是否够好。

  2. 许多芯片厂商提供了他们自己的编译器。就其本身而论,8051编译器是否足够好还不是很确定,他们的ARM编译器看上去似乎也很优秀。然而,这并不是一个假设。因此尽管我全力赞同Keil 8051编译器,但是对于他们的ARM编译器,我没有任何的看法。

  3. 编译器分为从“免费”、到“便宜”、到“昂贵”、到“被嘲笑”几种类型。我把这些形容价格的词都放到引号里面了,因为下面你将会看到,是“免费”还是“昂贵”其实很难界定。

  基于以上的导言,我们开始讨论“免费”和“便宜”的编译器,其中包括GCC。对于我来说,真正的底线是我负担不起使用这些编译器。原因非常简单,我是一个高价的顾问。在某种程度上,每小时我可以征收昂贵的咨询费用,因为我有异常高的效率。我取得高效的方法并不包括在问题无关的事情上浪费我的时间(这也是顾客的金钱)。假定编译器/链接器是经常使用的工具,并且假定我是这个工具的使用者,当我碰到一个编译器的问题时,我可以拿起电话并且尽快得到一个明确的回复,这点是非常重要的。而“免费”或者“便宜”的编译器并不能做到这一点,所以我们更常通过网络来找到问题的答案。这时,这样的“免费”编译器就变得“代价不菲”。

  关于这个话题总让我吃惊的是,非常多的雇主/工程师似乎明白这一点。但似乎这些人习惯性地拒绝为一个编译器花费2000美元——而很乐意让他们的工程师花一周的时间来拼命解决一个付费编译器可以解决的问题——而花费的这一周每天的费用至少1000美元。

  因此,对于我来说,“GCC是一个好的编译器吗?”这个问题的答案是:“不,它不是一个好的编译器。”当然如果你是一个学生,或者你的确金钱短缺但时间充裕,那么你可以使用GCC,我相信你对结果会非常满意,并且发现了一个对你而言非常好的编译器。

  而什么是“昂贵”和“被嘲笑”的编译器?更为有趣的是,尽管经验有限,我发现非常昂贵的编译器供应商(1万美元以上)也有糟糕的技术支持。但是,这些昂贵编译器的供应商可以提供最好的组合,包括功能、代码质量、技术支持和价格,而这些是我愿意使用“昂贵”编译器的最重要原因。

  Nigel Jones是嵌入式系统软件和固件设计方面的专家。