您尚未登录。

楼主 #1 2018-04-20 12:27:04

msr06rr
会员
所在地: 苏州
注册时间: 2018-01-11
已发帖子: 179
积分: 169.5

buildroot选择外部编译器的时候,貌似警告说linaro工具链只支持Cortex A的处理器。。。是这个意思吗?

如下图所示,当我配置外部工具链的时候最上面一行字“Linaro toochains available for Cortex-A + EABIhf”
Linaro-Toolchain-Limits.png
难道Linaro工具链编译LicheePi Nano的Buildroot真的不可用?我尝试了一把,结果上电后就gg了。。。直接Kernel panic,exitcode是0x0000000b
kernel-panic.jpeg
但是选择让buildroot自己下载使用Sourcery CodeBench ARM 2014.5的话,同样的配置,是可以正常工作的

离线

楼主 #3 2018-04-20 12:46:38

msr06rr
会员
所在地: 苏州
注册时间: 2018-01-11
已发帖子: 179
积分: 169.5

Re: buildroot选择外部编译器的时候,貌似警告说linaro工具链只支持Cortex A的处理器。。。是这个意思吗?

晕哥 说:

应该是这个问题了,hf是硬件浮点数,
而arm926-ejs根本没有这玩意。

可是我用的linaro是linux-arm-gnueabi版本的,没带hf,用来编译uboot和kernel都好好的:|

离线

楼主 #8 2018-04-30 11:06:04

msr06rr
会员
所在地: 苏州
注册时间: 2018-01-11
已发帖子: 179
积分: 169.5

Re: buildroot选择外部编译器的时候,貌似警告说linaro工具链只支持Cortex A的处理器。。。是这个意思吗?

pighead 说:

这个问题也浪费了我几个小时,后来拿云盘上给的那个rootfs来对比,才发现:
1. arm-linux-gnueabi 这个工具链用来编译内核没有问题,编译应用则会出现问题;

2. 编译应用的问题,是因为工具链所附加的库,是面向Cortex A7来编译的;因为假如只编译,不链接: arm-linux-gnueabi-gcc -Q -v -c -mcpu=arm926ej-s hello.c ,然后用readelf -A hello.o,会发现:Tag_CPU_name: "ARM926EJ-S";但只要链接了库,就成了:Tag_CPU_name: "7-A"

3. 解决方法,重新编译工具链,使得它附带的库是用于ARM926EJ-S的,方法是:

https://briolidz.wordpress.com/2012/02/07/building-embedded-arm-systems-with-crosstool-ng/
http://unisim-vp.org/site/crosstool-arm-926ejs-linux-gnueabi-how-to.html

4. 之后再使用编译出来的external toolchain,也是完全OK的。

分析的很有道理,又学了一招。
我后来也是用crosstool-ng自己编了一套,还把c库换成了uclibc

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn