是否可以用gcc以外的东西编译Linux内核

是否可以用gcc以外的东西编译Linux内核,linux,gcc,linux-kernel,Linux,Gcc,Linux Kernel,我想知道是否有人用gcc以外的编译器编译了Linux内核。或者如果有人试过?这个问题可能看起来很愚蠢或学术性,但当我想到以下问题的答案时,它就出现了: 似乎某些操作的原子性不仅取决于cpu体系结构,还取决于所使用的编译器。所以,我想知道在Linux世界中是否存在gcc以外的编译器。Linux明确依赖于某些编译器,因此在这种情况下,任何其他编译器都必须与所需的扩展兼容 这不是一个“不”,因为对于一个独立的编译器供应商/开发人员来说,跟踪gcc的扩展当然不是不可能的,只是一个可能帮助您搜索的数据点。

我想知道是否有人用gcc以外的编译器编译了Linux内核。或者如果有人试过?这个问题可能看起来很愚蠢或学术性,但当我想到以下问题的答案时,它就出现了:


似乎某些操作的原子性不仅取决于cpu体系结构,还取决于所使用的编译器。所以,我想知道在Linux世界中是否存在gcc以外的编译器。

Linux明确依赖于某些编译器,因此在这种情况下,任何其他编译器都必须与所需的扩展兼容


这不是一个“不”,因为对于一个独立的编译器供应商/开发人员来说,跟踪gcc的扩展当然不是不可能的,只是一个可能帮助您搜索的数据点。

IBM的编译器在一些Linux版本之前就能够做到这一点,但我现在不确定,也不确定IBM是否按照指示优化了内核。我所知道的是,他们要建造它

由于Linux是自托管的(有自己的libc),并且从一开始就使用gcc(和gcc交叉编译器)开发,所以使用其他任何东西都有点愚蠢

我认为,主要是,处理好预处理器宏和指导优化是最大的障碍(甚至没有偏离gas),因为GNU已经基本上写了这本书,并对其进行了扩展。除此之外,Linux还调整其优化以与gcc配合使用,例如,不要在内核中使用“volatile”而毫无理由。使用内联并让编译器同意是另一个挑战

Linus是第一个将GCC称为&*#$hole的编译器,这有助于更好地编译


这就是为什么我们要讨论GNU/Linux

已经有一些努力(和)用编译2.6内核的早期版本。

在某个时候会处理和使用linux内核源代码。我想那应该是肯定的


< P>:在评论中,对帽子的提示::

很多,很多很多年前,实际上是可能的,而且据我所记得,部分动机是因为C++有更强的类型检查,不一定要有G+来生成目标文件。但正如尼尔·巴特沃斯(Neil Butterworth)所指出的那样,Linus是,而且这种情况再次发生的可能性为零。

我的非技术性猜测:Linux内核目前(2009年)不能使用GNU编译器以外的任何编译器进行编译,gcc

我这样说是基于我听到Richard Stallman,带着某种信念,说Linux应该被称为GNU/Linux,因为内核“只是操作系统的一部分”,我猜如果内核不依赖GNU,他就不会这么说了(例如,一吨嵌入式设备在没有任何GNU软件的情况下运行Linux操作系统)


正如我所说的,只是一个猜测,如果我错了,请告诉我…

开发人员正试图使用它进行编译。有更多的细节(显示似乎只剩下很少的部分)。

是的。我已经这样做了。请参阅。

EKOPath 4编译器,不是现在。但可能有一些小补丁


我正在使用Open64 for MIPS架构编译Linux内核,其他一些人正在为make Open64 can build for X86 arch工作。现在内核可以部分运行,但仍然存在运行失败错误

但对于原子问题,至少我还没有想到。我认为这不是一个真正的问题。原因是:

  • Linux内核已经是源代码的集合,可以使用GCC成功构建,因此,如果编译器无法构建它,或者构建的内核运行失败,那么这只是编译器的问题

  • 如果一个编译器想要成功构建Linux内核,它应该禁止GNU C扩展,这个扩展将清楚地描述什么是原子操作,所以这样的编译只需要根据这个扩展生成代码


  • 我想知道,当使用不同的编译器编译时,为某些cpu体系结构编写的一些软件是否会停止正常工作(很可能是的,所以我想知道除了gcc编译器之外的其他编译器将用于Linux的可能性有多大)英特尔是唯一一个试图用另一个编译器编译内核的公司。不知道,我很肯定我用icc构建了内核(我不记得是2.6还是2.4)“TCCBOOT是一个引导加载程序,可以直接从源代码编译和引导Linux内核。”是的,TCC能够在某个时候构建一个可运行的Linux内核。@ EffiMeTe:我从来没有注意到。谢谢。RMS指的是GNU CORUTILLS和其他用户端工具。现在还有Linux基金会项目“LLVMLinux”。修补linux内核,使其可由LLVM和clang编译:linux开发人员使用了一些未记录的gcc扩展,因为“它可以正常工作,而且对VLAIS没有任何警告”,即使使用
    -ansi-padantic
    (gcc只会在很少使用
    -pedantic错误的情况下吠叫)Linux Linux基金会和Behan Webster在2013-2014年成功的LLVMLinux项目:从香草Linux内核删除最坏的GCC ISS。“这就是为什么我们有GNU/Linux的巨大争论。”不正确,请参阅。