您尚未登录。

楼主 #1 2019-11-08 12:08:29

cris8259
会员
注册时间: 2019-09-25
已发帖子: 273
积分: 77

关于buildroot

buildroot使用外部编译工具链,会导致panic,使用内部工具链,则可以正常启动。

Toolchain设置
1. Toolchain type (External toolchain)  --->
2. Toolchain (Custom toolchain)
3. Toolchain origin (Pre-installed toolchain)
4. (/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi) Toolchain
5. (arm-linux-gnueabi) Toolchain prefix
6. External toolchain gcc version (7.x)  --->
7. External toolchain kernel headers series (4.10.x)
8. External toolchain C library (glibc/eglibc)
9. [//*] Toolchain has SSP support? (NEW)
10.[//*] Toolchain has RPC support? (NEW)

问题:
1. 按照上面设置编译出来,运行会导致panic,如下,什么原因
[    1.786977] VFS: Mounted root (jffs2 filesystem) on device 31:3.
[    1.795787] devtmpfs: mounted
[    1.805273] Freeing unused kernel memory: 1024K
[    2.074266] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    2.074266]
[    2.083419] CPU: 0 PID: 1 Comm: init Not tainted 4.15.0-rc8-licheepi-nano+ #5
[    2.090537] Hardware name: Allwinner suniv Family
[    2.095323] [<c010e550>] (unwind_backtrace) from [<c010b6a8>] (show_stack+0x10/0x14)
[    2.103079] [<c010b6a8>] (show_stack) from [<c0116878>] (panic+0xb8/0x230)
[    2.109958] [<c0116878>] (panic) from [<c0118034>] (do_exit+0x96c/0x9a4)
[    2.116659] [<c0118034>] (do_exit) from [<c0118bb8>] (do_group_exit+0x3c/0xb4)
[    2.123877] [<c0118bb8>] (do_group_exit) from [<c0121758>] (get_signal+0x144/0x558)
[    2.131537] [<c0121758>] (get_signal) from [<c010a934>] (do_signal+0xc4/0x404)
[    2.138766] [<c010a934>] (do_signal) from [<c010ae3c>] (do_work_pending+0xb8/0xcc)
[    2.146335] [<c010ae3c>] (do_work_pending) from [<c0107d48>] (slow_work_pending+0xc/0x20)
[    2.154500] Rebooting in 5 seconds..
[    8.133732] Reboot failed -- System halted

2. 使用外部工具链时,设置8. External toolchain C library (glibc/eglibc)必须选择glibc/eglibc ,不然编译会报错c lib选择错误,这是为何
3. 使用外部工具链时,设置7. External toolchain kernel headers series (4.10.x) 必须选择4.10.x , 我选4.15.x会报错显示预期是4.15,实际是4.10,
    这个4.10.x是由哪里决定的?

4. 如果使用内部工具链,则设置8中的C library 随便选哪个都可以编译通过,而且系统可以正常运行,原因何在

在线

#2 2019-11-08 14:02:47

smartcar
会员
注册时间: 2018-02-19
已发帖子: 735
积分: 735

Re: 关于buildroot

离线

#3 2019-11-08 15:59:15

xgui
会员
注册时间: 2019-09-07
已发帖子: 224
积分: 224

Re: 关于buildroot

第4个问题,内部tool chain, libc也是内部的(经过测试的版本),当然随便怎么选都ok

离线

#4 2019-11-08 16:01:28

我思故我在
会员
注册时间: 2019-09-03
已发帖子: 244
积分: 243.5

Re: 关于buildroot

mmexport1573199104860.png

mmexport1573199102650.png

第一张图是buildroot 2019里面的Config.in
第二张是2017
人家规定了版本
至于4.10可以,4.15报错,要看看她的buildroot里面的具体情况
有些脚本编写时可能没有考虑到新版本
这个在./configure时经常出现,不知道buildroot是不是一样存在

离线

#5 2019-11-08 16:49:59

单刀
会员
注册时间: 2019-11-07
已发帖子: 17
积分: 17

Re: 关于buildroot

第3个问题是读的外部工具链的内核版本

离线

楼主 #6 2019-11-08 16:56:56

cris8259
会员
注册时间: 2019-09-25
已发帖子: 273
积分: 77

Re: 关于buildroot

uboot kernel 都是用/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi编译,为何buildroot用一样的编译器就不行了

在线

#7 2019-11-08 17:13:50

我思故我在
会员
注册时间: 2019-09-03
已发帖子: 244
积分: 243.5

Re: 关于buildroot

cris8259 说:

uboot kernel 都是用/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi编译,为何buildroot用一样的编译器就不行了

用 -v 参数打印出来看下, 可能要设置一个参数, 如果用默认参数编译会生成arm9识别不了的指令,然后就没有然后了。

离线

楼主 #8 2019-11-08 17:32:58

cris8259
会员
注册时间: 2019-09-25
已发帖子: 273
积分: 77

Re: 关于buildroot

我思故我在 说:
cris8259 说:

uboot kernel 都是用/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi编译,为何buildroot用一样的编译器就不行了

用 -v 参数打印出来看下, 可能要设置一个参数, 如果用默认参数编译会生成arm9识别不了的指令,然后就没有然后了。

你的意思是buildroot生成了arm9的指令?你是指打印什么参数,需要设置什么参数

在线

#9 2019-11-08 21:31:42

jimmy
会员
注册时间: 2017-10-29
已发帖子: 316
积分: 315

Re: 关于buildroot

应该是说buildroot生成的arm-linux-gcc,用这个编译出的应用程序是没有问题的,而别的工具链由于参数的问题,生成的应用程序指令集有问题。

离线

楼主 #10 2019-11-08 23:57:36

cris8259
会员
注册时间: 2019-09-25
已发帖子: 273
积分: 77

Re: 关于buildroot

jimmy 说:

应该是说buildroot生成的arm-linux-gcc,用这个编译出的应用程序是没有问题的,而别的工具链由于参数的问题,生成的应用程序指令集有问题。

就是说编译buildroot 和 app 用 buildroot生成的工具链,这样参数不会有问题,而编译BootLoader和kernel用buildroot生成的工具链或者其他工具链都行,是这个意思吗

在线

#11 2020-01-08 20:01:20

nufing
会员
注册时间: 2020-01-02
已发帖子: 92
积分: 81.5

Re: 关于buildroot

楼主有没有解决?我也遇到和你一模一样的问题,郁闷中

离线

#12 2020-01-09 12:48:52

Zodiac
会员
注册时间: 2018-11-28
已发帖子: 42
积分: 42

Re: 关于buildroot

cris8259 说:

就是说编译buildroot 和 app 用 buildroot生成的工具链,这样参数不会有问题,而编译BootLoader和kernel用buildroot生成的工具链或者其他工具链都行,是这个意思吗

你要混用外部工具链,就要做到兼容buildroot,参数包括:libc、eabi、fp等的设置。即,编译组织root文件系统的工具链和编译Kernel时用的工具链参数兼容。Kernel是需要配合root上的libc环境的,接口不兼容自然会影响相关依赖代码的执行。

离线

#13 2020-01-09 15:36:57

nufing
会员
注册时间: 2020-01-02
已发帖子: 92
积分: 81.5

Re: 关于buildroot

4. (/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi) Toolchain
5. (arm-linux-gnueabi) Toolchain prefix

研究好几天,

编译器 改为  arm-none-linux-gnueabi  就好了.

离线

#14 2020-01-09 15:50:48

超级萌新
会员
注册时间: 2018-05-04
已发帖子: 408
积分: 407

Re: 关于buildroot

Zodiac 说:

你要混用外部工具链,就要做到兼容buildroot,参数包括:libc、eabi、fp等的设置。即,编译组织root文件系统的工具链和编译Kernel时用的工具链参数兼容。Kernel是需要配合root上的libc环境的,接口不兼容自然会影响相关依赖代码的执行。

原来如此,本来打算在 linux 用 mingw + buildroot 编译win32平台软件,结果libc 不存在就直接 gg 了。

离线

#15 2020-06-02 16:37:15

chengqy
会员
注册时间: 2019-12-12
已发帖子: 11
积分: 5

Re: 关于buildroot

圈子好小,搜了一圈,又搜到坑网了,这个错误真是坑

离线

#16 2022-03-06 20:48:43

xfdr0805
会员
注册时间: 2020-07-23
已发帖子: 312
积分: 355

Re: 关于buildroot

chengqy 说:

圈子好小,搜了一圈,又搜到坑网了,这个错误真是坑

是的 遇到同样的问题,最后还得来坑网填坑.

离线

#17 2022-12-06 21:06:13

刘德权
会员
注册时间: 2022-02-25
已发帖子: 5
积分: 18

Re: 关于buildroot

废话:它其实是想知道当年编译这个交叉编译器的内核的版本(不要问我上一个交叉编译器的版本)。

External toolchain kernel headers series  = 4.20.x    //交叉编译器的linux 版本号
这个版本号 指的不是即将编译的Linux内核的版本号 而是指的是当初编译这个编译工具的Linux内核版本号
这个版本号去哪里找呢?
找到编译工具链的目录,然后使用下述命令来找
find . |grep version.h
比如这个 ./arm-none-linux-gnueabihf/libc/usr/include/linux/version.h
用vim打开这个文件,得到
#define LINUX_VERSION_CODE 267277
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
267277是十进制的,变成16进制是 0x4140D 分割成3组是0x04 0x14 0x0D 写成十进制表示则是 4.20.13

离线

页脚

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

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