Eclipse 是否需要使用工具链来编译内核?

Eclipse 是否需要使用工具链来编译内核?,eclipse,gcc,kernel,32bit-64bit,toolchain,Eclipse,Gcc,Kernel,32bit 64bit,Toolchain,我想开始将此板用于开发目的: 我的目标是编译一个32位内核并构建一个根文件系统等。该板运行在Intel Atom D525(体系结构:x86_64)上。我想使用Eclipse并在其上执行交叉编译和调试。我正在一台机器上使用ubuntu14.04 LTS 我找了很长时间。我安装了libs和其他软件包。但我并没有像ARM或PowerPC那样为英特尔Atom开发提供完整的工具链 我是否应该将GNU工具链用作带有选项-m32等的交叉工具?这是路吗? 欢迎有任何想法 100%必要否,如果您是。当您在64位

我想开始将此板用于开发目的:

我的目标是编译一个
32位
内核并构建一个根文件系统等。该板运行在Intel Atom D525(体系结构:
x86_64
)上。我想使用Eclipse并在其上执行交叉编译和调试。我正在一台机器上使用ubuntu
14.04 LTS

我找了很长时间。我安装了libs和其他软件包。但我并没有像ARM或PowerPC那样为英特尔Atom开发提供完整的工具链

我是否应该将GNU工具链用作带有选项
-m32
等的交叉工具?这是路吗?
欢迎有任何想法

100%必要否,如果您。当您在64位机器上构建内核,特别是32位内核时,如果没有交叉编译器,您使用的是一个不是为您的目标体系结构开发的gcc。这会导致兼容性问题。其中一个最大的问题是stddef.h、stdint.h和stdarg.h。这是特定于体系结构的。为了解决这个问题,在构建没有交叉编译器的内核时,您经常会看到传递的
-nostinc
标志。这将禁用包含默认头文件(如stddef.h),并让开发人员创建这些文件。您可以实现这些功能,但这通常很棘手,如果您弄错了,则很难进行调试。我个人经历过的另一个大问题是,编译器的发布将破坏您的内核构建。假设您将机器升级到下一个Linux发行版。由于gcc中的更改,您的内核现在很有可能无法构建。当我从一个不知道.eh_框架的gcc/ld升级到一个知道的gcc/ld时,我经历了这种情况。这中断了链接步骤,需要调整链接器脚本。如果我的小组使用的是交叉编译器,这不会是一个问题(附带说明,这是导致我们切换到交叉编译器的原因)。还有许多其他的原因,一些是基于观点的,而另一些则是基于观点的。有关更多信息,请查看osdev页面


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

100%必要否,如果您。当您在64位机器上构建内核,特别是32位内核时,如果没有交叉编译器,您使用的是一个不是为您的目标体系结构开发的gcc。这会导致兼容性问题。其中一个最大的问题是stddef.h、stdint.h和stdarg.h。这是特定于体系结构的。为了解决这个问题,在构建没有交叉编译器的内核时,您经常会看到传递的
-nostinc
标志。这将禁用包含默认头文件(如stddef.h),并让开发人员创建这些文件。您可以实现这些功能,但这通常很棘手,如果您弄错了,则很难进行调试。我个人经历过的另一个大问题是,编译器的发布将破坏您的内核构建。假设您将机器升级到下一个Linux发行版。由于gcc中的更改,您的内核现在很有可能无法构建。当我从一个不知道.eh_框架的gcc/ld升级到一个知道的gcc/ld时,我经历了这种情况。这中断了链接步骤,需要调整链接器脚本。如果我的小组使用的是交叉编译器,这不会是一个问题(附带说明,这是导致我们切换到交叉编译器的原因)。还有许多其他的原因,一些是基于观点的,而另一些则是基于观点的。有关更多信息,请查看osdev页面


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

谢谢你的详细回答。现在,我将按照你的建议,分享过程和后果。也许在我的业余时间,我可以和gnu一起去看看不同之处。King问候@Esm感谢您的详细回答。现在,我将按照您的建议,分享过程和结果。也许在我的业余时间,我可以和gnu一起去看看不同之处。国王问候@esm