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 随便选哪个都可以编译通过,而且系统可以正常运行,原因何在
离线
uboot kernel 都是用/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi编译,为何buildroot用一样的编译器就不行了
离线
cris8259 说:uboot kernel 都是用/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi编译,为何buildroot用一样的编译器就不行了
用 -v 参数打印出来看下, 可能要设置一个参数, 如果用默认参数编译会生成arm9识别不了的指令,然后就没有然后了。
你的意思是buildroot生成了arm9的指令?你是指打印什么参数,需要设置什么参数
离线
应该是说buildroot生成的arm-linux-gcc,用这个编译出的应用程序是没有问题的,而别的工具链由于参数的问题,生成的应用程序指令集有问题。
就是说编译buildroot 和 app 用 buildroot生成的工具链,这样参数不会有问题,而编译BootLoader和kernel用buildroot生成的工具链或者其他工具链都行,是这个意思吗
离线