首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否需要使用工具链来编译内核?

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

Stack Overflow用户
提问于 2015-07-02 12:28:33
回答 1查看 138关注 0票数 1

我想开始使用这个板进行开发:下午-Pv-D 525

我的目标是编译一个32bit内核,并构造一个根文件系统等等。该板运行在Intel D525 (架构:x86_64)上。我想使用Eclipse并对其执行交叉编译和调试。我正在x64机器上使用ubuntu x64

我找了很久。我安装了libs和其他软件包。但我没有想出一个完整的工具链来用于Intel的开发,就像ARM或PowerPC使用的工具链一样。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 14:34:59

100%必须不,如果你。当您构建内核时,特别是在64位机器上构建32位内核时,如果没有交叉编译器,则使用的是不是为目标体系结构开发的gcc。这会导致兼容性问题。其中一个大罪犯是stddef.h,stdint.h和stdarg.h。这是特定于架构的。为了解决这个问题,您经常会看到在构建没有交叉编译器的内核时传递的-nostdinc标志。这将禁用默认的标头,如stddef.h,并让开发人员创建这些标头。您可以实现这些,但这通常是很棘手的,如果您弄错了,将很难调试。另一个大问题,我个人有经验,是编译器版本将破坏您的内核构建。假设您将机器升级到下一个Linux发行版。现在,由于gcc的变化,您的内核很有可能不会构建。当我从一个不知道.eh_frames的gcc/ld升级到一个这样的时候,我就体会到了这一点。这破坏了链接步骤,需要对链接器脚本进行调整。如果我的小组使用的是交叉编译器,这将不会是一个问题(请注意,这是导致我们切换到交叉编译器的原因)。还有很多其他的原因,有些是基于更多的意见,而另一些则是其他的。有关更多信息,您可以查看osdev页面为什么我需要一个交叉编译器?

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31184709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档