当前位置:  开发笔记 > 编程语言 > 正文

ARM架构的Linux交叉编译

如何解决《ARM架构的Linux交叉编译》经验,为你挑选了5个好方法。

我有兴趣在x86主机上为ARM目标交叉编译Linux内核.你推荐一些好的做法吗?您认为哪个是最好的交叉编译套件?您是否已经确定了自定义交叉编译环境?如果是,您有什么建议?这是个好主意吗?



1> ctuffli..:

我用于ARM/Linux工具的方法有两种.最简单的方法是直接下载预先构建的工具链.
Pro:它只是工作,你可以继续你的项目的有趣部分
Con:你被困在他们选择的任何版本的gcc/binutils/libc

如果后者对您很重要,请查看crosstool-ng.该项目是一个类似于Linux内核配置应用程序的配置工具.设置要构建的gcc,binutils,libc(GNU或uCLibc),线程和Linux内核的哪些版本以及crosstool-ng其余部分(即下载tar球,配置工具并构建它们).
Pro:您可以获得在配置期间选择的内容
Con:您可以获得在配置期间选择的内容

这意味着您对compiler/binutil/libc及其相关功能/缺点/错误的选择承担全部责任.此外,正如评论中所提到的,选择binutils,C库等版本时会涉及​​一些"痛苦",因为并非所有组合都必须协同工作或甚至构建.

一种混合方法可能是从预先构建的工具开始,并在必要时通过crosstool-ng使用自定义解决方案替换它们.

更新:答案最初使用CodeSourcery工具作为预构建工具链的示例.用于ARM的CodeSourcery工具可以从Mentor Graphics免费下载,但它们现在称为Sourcery CodeBench,必须从Mentor Graphics购买.其他选项现在包括Linaro以及Android,Ubuntu和其他公司的分发特定工具.


对于crosstool-ng的另一个问题是你必须自己找出gcc/glibc/target架构版本的哪些组合有效,哪些不可用.(好的,您可以在crosstool-ng主页上的"已知工作"列表中查找它们,但如果您的首选组合不在列表中,则由您自己查明它是否有效.

2> womble..:

我使用emdebian工具链来编译我的ARM机器的东西,这些东西不太乐意在可用的小资源中本地编译(/我对内核瞪眼).主程序包是gcc-4.X-arm-linux-gnueabi(X = 1,2,3),并提供适当的后缀gcc/cpp/ld/etc命令.我把它添加到我的sources.list:

deb http://www.emdebian.org/debian/ unstable main

当然,如果你不使用Debian,这可能不是那么有用,但是通过口香糖它对我很有用.



3> barneytron..:

我在尝试为maemo(诺基亚N810)构建应用程序时使用了scratchbox,后者使用的是ARM处理器.据说,scratchbox不仅限于maemo开发.



4> Steve Lazari..:

我在几个目标上使用过crosstool.只要您想从头开始构建工具链,它就很棒.当然还有几个预制的手臂工具链,只是google它 - 这里有太多不足之处.

1)在我看来,构建自己的工具链是最好的.您最终可以严格控制所有内容,而且如果您是嵌入式Linux的新手,那么这是一次很棒的学习体验.

2)不要使用商业工具链.即使你不想花时间建立自己的,也有免费的替代品.

如果你的公司会花钱,让他们给你买一个jtag调试器.
它将为您节省大量时间. 它允许您轻松学习并逐步完成内核启动等.我强烈推荐使用Lauterbach jtag产品......他们使用大量目标,软件是跨平台的.他们的支持也很棒.

如果您无法获得jtag调试器并且您正在使用内核,请使用VM来执行此操作,usermode linux,vmware..etc ..您的代码将在x86上调试..将其移植到您的arm目标将是一个不同的故事,但它是一个更便宜的方法来消除一些错误.

如果要移植引导加载程序,请使用uboot.当然,如果您使用的是参考平台,那么您可能最好使用它们为BSP提供的功能.

我希望有所帮助.



5> Charles Duff..:

Buildroot是一个工具,我从头开始构建一个基于uClibc的自定义工具链.它是非常可定制的,并且对于您正在运行的分发版本并不过分具体.

此外,它的许多现有用户(即嵌入式路由器发行版)也针对ARM.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有