我想知道是否有人设法使用除gcc之外的其他编译器来编译Linux内核.或者,如果有人尝试过?问题可能看起来很愚蠢或者是学术性的,但是当我想到答案时它就出现了:C++ int操作是否在mips体系结构上是原子的
似乎某些操作的原子性不仅取决于cpu体系结构,还取决于使用的编译器.所以,我想知道在Linux世界中是否存在除gcc之外的一些编译器.
Linux明确依赖于某些gcc扩展,因此在这种情况下,任何其他编译器必须与所需的扩展兼容.
这不是"不",因为单独的编译器供应商/开发人员当然不可能跟踪gcc的扩展,只是一个可以帮助您搜索的数据点.
在某些时候,tcc将处理并运行 linux内核源代码.我猜,那将是肯定的.
::帽子提示在评论中流行.::
该LLVM开发者正试图与编译它铛.使用clang编译Linux内核的元错误有更多细节(该元错误的依赖关系树显示了似乎有多少).
已经有一些努力(和补丁)来编译2.6内核的早期版本icc
.
对.我做到了这一点.请参阅[cfe-dev] Clang构建一个可用的Linux内核(使用SMP启动到RL5,网络和X,自主机).
IBM的编译器能够在一些Linux版本之前完成它,但我现在不确定,也不确定IBM如何按照指示优化内核.我所知道的是,他们得到了它.
由于Linux是自托管(具有自己的libc)并且从一开始就使用gcc(和gcc交叉编译器)开发,因此使用其他任何东西都是愚蠢的.
我认为主要是,使用预处理器宏和指示优化是最好的障碍(甚至没有脱离天然气),因为GNU已经基本上写了上面的书,并扩展了它.除此之外,Linux调整其优化以使用gcc,例如,不要在内核中使用"volatile"而没有充分理由.使用内联并实际让编译器同意是另一个挑战.
Linus是第一个将GCC称为&*#$ hole的人,这使得编译器更好.
这就是为什么我们有很好的GNU/Linux辩论.