是否有必要使用工具链来编译内核?

时间:2015-07-02 12:28:33

标签: eclipse gcc kernel 32bit-64bit toolchain

我想开始使用此主板进行开发:Pm-Pv-D525

我的目标是编译32bit内核并构建根文件系统等。该板运行在Intel Atom D525(架构:x86_64)上。我想使用Eclipse并对其进行交叉编译和调试。我在14.04 LTS计算机上使用ubuntu x64

我搜索了很久。我安装了libs和其他软件包。但我没有提出用于英特尔凌动开发的完整工具链,例如ARM或PowerPC使用的工具链。

我应该使用GNU工具链作为带有选项-m32等的交叉工具吗?这会是要走的路吗? 欢迎任何想法!

1 个答案:

答案 0 :(得分:0)

100%必要否,如果。当您在64位计算机上构建内核(尤其是32位内核)时,如果没有交叉编译器,您将使用未针对目标体系结构开发的gcc。这会导致兼容性问题。其中一个大罪犯是诸如stddef.h,stdint.h和stdarg.h之类的东西。这是特定于架构的。为了解决这个问题,您经常会在构建没有交叉编译器的内核时看到-nostdinc标志。这会禁用包括默认标头(如stddef.h)并让开发人员创建这些标头。你可以实现这些,但它通常很棘手,如果你弄错了,将很难调试。我亲身经历的另一个大问题是编译器版本会破坏你的内核构建。让我们说你将你的机器升级到下一个Linux发行版。由于gcc的变化,现在很可能你的内核无法构建。当我从一个不知道.eh_frames的gcc / ld升级到那个。这打破了链接步骤并需要调整链接描述文件。如果我的小组使用的是交叉编译器,这不会成为一个问题(在旁注上这是导致我们切换到交叉编译器的原因)。还有很多其他原因,一些基于其他原因的意见。有关详细信息,请查看osdev页面Why do I need a Cross Compiler?

另外,要安装的相对简单的32位x86工具链是yocto项目使用的工具链。您可以找到安装它的说明here。我更喜欢名为"使用交叉工具链Tarball"你可以找到必要的下载here。首先选择您的主机架构(从您的问题很可能是x86_64),然后选择您的目标架构(再次从您的问题中再次提到poky-glibc-x86_64-core-image-sato-i586-toolchain-1.8.sh)。