摘要: 从GCC 迁移到 Clang 的主要原因是GCC 的GPL v3与 FreeBSD 项目目标的不兼容. 还有一些与公司投资相关的政治因素,以及来自用户的需求. 当然, 也有一些技术上的因素, 如符合标准, 容易调试. 但对于实际编译和运行性能的提升任具有争议且依赖于具体的代码, 两个编译器各有所长.
用户基础:FreeBSD对许多公司来说是一个诱人的开源选项,因为她的许可是简单的,低限制以及不会引导公司走向诉讼的许可。随着GPL v3以及 反 Tivoisation时代的到来,越来越多的迹象显示,未来将会 是迅速的,以设备商为驱动的多元化许可时代。随着FreeBSD逐渐觉察到了那些建立在自己许可之上的商业实体所能带来的巨大利益,对于那些要从GCC以及传统GPL迁移许可方式的合作伙伴来说,他们的将会面临越来越大的压力。
GCC存在的问题:除了许可部分,在使用GCC的过程中 还存在许多比较明显的问题。GCC并没有完全符合已制定规范标准,他的 许多扩展在ISO以及C标准规范中并没有定义。在超过300万行之多的代码中,他仅仅是“ 一个复杂的免费开源软件项目”。其复杂性使得他在发行版发行后再进行修改变成巨大的挑战
虽然使用LLVM在构建代码的时候比GCC更加迅速...但是在大多数情况下,GCC4.5的二进制类库的变现是好于LLVM-GCC和Clang...在其他的一些测试中,其表现则是接近或者是远远落后。在大多数测试中,Clang的整体二进制库是非常简单的。
总结 :这样强有力的编译器并不是一次冒险将一个像FreeBDS这样的大项目改变成一个新的编译器工具链的重要激励。尤其是在二进制运行效果不佳的情况下。然而,这种情况在现实中却是站不住脚的。让你在以下几种情况中做一个选择
1)继续使用过时的GCC,
2)迁移到最新版GCC并被迫使用一个与项目目标不适应的许可,或者
3)干脆迁移到一个支持BSD许可的稳定编译器,这样的选择在现实中似乎是不可避免的。
需要清楚的是:这些情况只应用在基础系统中,并且服务于系统发布;至于其他情况,没有其他任何事情都不能阻止用户在基于FreeBSD的项目中安装和使用一个现代版的GCC
评论删除后,数据将无法恢复
评论(31)
我觉得,开源不代表免费,免费也不等于开源,过分地强调自由,认为是不合理的。我喜欢BSD协议,不支持gpl,当然,想不用到也是很难的……
GCC不但是C/C++/ObjC 编译器,而且还要能编译Ada, Fortran, Java, Pascal编译器,前端代码并不是人编写的C程序,而是用被称为“词法分析器”和“语法分析器”的Flex, Bosion生成的C程序。麻烦来了,生成的代码谁都看不懂,也没有人敢对这部分代码修改完善hack。同样的情况也出项GNU AutoMake生成的那一个超长的Configre文件。
我不知道为什么用Flex和Bosion生成这部分代码,是因为编写能编译多种源程序的程序工作量大? 有难度? 又或者只是因为他们之中有人会用Flex和Bosion, 而且生成的程序工作良好,所以没必要人工写词法语法分析? 总之,GCC与Flex和Bosion就这样紧密的绑在一起了,似乎这种情况还会持续十年以上甚至更久。
软件发展变化更新太快,很多软件都是一年一个版本,同样类型的软件甚至有个几十个“竞争对手”,可惜这种情况并没有出现在词法分析器、语法分析器上,自从这两个程序发明以来,几乎就没有动过,没有哪个人冒出来说:“嘿,这两程序语法规则的编写已经不符合编程语言的变化,我有个新的想法.....”,或者说:“这两程序生成的程序太糟糕”..等等
这样的前端是我不能忍受的,我相信也是苹果、Bsd社区不能接受的,我们当中的大部分程序员没见过Ada, Fortan程序,不需要他们,至于Java, Pascal,虽然我们也从各种渠道学过,不过这三并不是我们所喜爱的东西,我们只需要C/C++/Obj C,因为我们需要一个新的前端Clang。
引用来自“ak_birdofprey”的评论
GPLV3给了所有人一种终极自由。但有人想把它据为己有是不可能的。从这个观点出发,GPLV3给了软件世界一个自由市场的模式。社区的存在让探索得以不断发展,而企业也同时可以为大家提供更好的产品。尽管有时山寨会一时蒙蔽大家,但随着时间的推移我想很多人还是会抛弃山寨的,比如ORACLE所谓的铁甲LINUX,最终我用过之后还是觉得直接用REDHAT的会更有安全感!!!
引用来自“沙枣”的评论
就好像苹果和微软,本就是靠模仿和跟随,加上自己的努力成长。成为巨人后,却成为阻碍别人模仿和跟随的一块绊脚石。
引用来自“GNU/数据”的评论
本文有点像是谷歌翻译的。。。太生硬了