在*nix下进行实际开发,除了gcc还有其他的替代方案吗?

17

我曾经听说过这样一句话:我们可以没有 Linux,但绝对不能没有 GCC。似乎在 Linux 世界中只有一个 C 编译器。是否有其他替代 GCC 的选择?AIX/HPUX/Solaris 下的程序员是否只使用 GCC 来开发程序?


1
在HP-UX上,你可以使用aCC或gcc。 - user184968
6个回答

14

在Linux系统中,肯定至少有一种替代gcc的选择:clang 是一个C语言编译器(以及其他相关方言的编译器,尽管据我所见,C前端比其他方言更成熟)。它利用LLVM。我认为苹果公司支持LLVM和相关开发;如果我没记错的话,这对他们的 Grand Central Dispatch/OpenCL 等功能很有用。


5
Intel提供了一款“非商业”C++编译器,下载链接在这里。请确保您阅读了许可证FAQ 这里,因为它附带有一些限制条件。
这里有一个列表,可能会对您有所帮助。

5

如果你正在寻找一个轻量级快速的C编译器,TinyCC(也可以参见维基百科)绝对值得一看。

然而,它也有一些缺点。它只执行非常少的优化,而最新的稳定版本仅支持x86架构,尽管在开发分支中已经有了实验性的x86_64支持。

考虑到TinyCC的这些缺陷,就目前而言,我可能会选择GCC来编写任何严肃的程序。

唯一TCC真正方便的用例是将其用作C代码的解释器。我没有测量过性能,但我可以想象,使用C语言编写的小型“脚本”可以顺畅地与Bash代码竞争(在解析和执行速度方面)。

开发人员甚至成功地实时解释了Linux 2.4内核并立即启动!有一个ISO映像在Qemu中可以完美运行。

由于GCC基于几十年前的代码,当时对于代码结构、设计模式等知识了解不多,因此GCC开发人员正在维护一个生锈且容易出错的基础。不幸的是,代码混乱无序,没有替代方案,只能进行完全重写。这也可能是LLVM开发人员推出Clang并从头开始的原因。从长远来看,我真的希望有一个合适的GCC替代品,从一开始就做到概念上的正确性。虽然Clang听起来像是一个值得推荐的替代品,但我对他们选择使用C++并不完全满意,但这是另一个话题。 :)

3
我崇拜设计模式。迟早你会发现并非所有东西都是设计模式,并且它们不能用于“任何”东西。编译器本质上就很复杂。所以…也许这是一团糟。不,不是也许,它就是一团糟。但是只是挥手洒洒地谈论“设计模式”,甚至更不明确的“代码结构”,这并不能解决问题,因为其中的大部分混乱(我敢打赌)必须是那样的。或者看看Linux内核的“混乱”。哦,我忘了:那是因为那些Linux怪胎对正确的软件开发一无所知。必须是这样,教授告诉我这一点。 - Jürgen A. Erhard

2

2

还有libfirm/cparser,它实现了大部分gcc的扩展,并生成优化代码(目前适用于x86 32位和sparc):http://pp.ipd.kit.edu/firm/


1
Sun Studio 12现已提供免费下载,适用于Linux (X86版本, 至少)和所有Solaris变体。我不知道编译器的X86/Linux版本如何比较,但编译器的Sparc/Solaris版本能够生成比GCC更优化的代码,并且调试器比GDB强大得多。缺点是你会被困在一个迟钝的基于Java的GUI调试器中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接