如上图,烧录后,写了一个简单的测试程序,总是出现not found 的提示,实在不知道问题出在了哪?
离线
实测 的确是工具链问题 应该是用了编译系统不能编译应用的工具链编译应用了
离线
不是,我是用的他给的资料里面的镜像(Nano_flash_800480.bin),一件烧录的,烧录完我用官方的交叉编译工具编译的一个helloworld测试程序,运行的时候出现的问题
离线
各版本arm-gcc区别与安装:
https://www.jianshu.com/p/fd0103d59d8e
离线
各版本arm-gcc区别与安装:
https://www.jianshu.com/p/fd0103d59d8e
我用的是arm-linux-gnueabi-gcc编译的,但我编译出来的是soft模式的,官方指导手册上给的就是arm-linux-gnueabi-gcc编译器,而且我的板子是arm9的,是不是不匹配啊
最近编辑记录 北冥雪 (2019-04-22 13:57:21)
离线
你看,官方给的就是这个编译器
离线
北冥雪 说:不是,我是用的他给的资料里面的镜像(Nano_flash_800480.bin),一件烧录的,烧录完我用官方的交叉编译工具编译的一个helloworld测试程序,运行的时候出现的问题
这个哪个官方的工具链?
这个
离线
可以运行了,但是文件有3.8M,运行了好久都没出来。就只是打印了一个hello,world,别的啥都没了
最近编辑记录 北冥雪 (2019-04-22 14:45:41)
离线
我把库文件拷贝到了板子上,然后出现了段错误,但是我编译的代码没有错啊,就是一个简单的输出,求大佬帮帮忙
离线
#file test
burn: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, stripped
#arm-linux-readelf -d test
Dynamic section at offset 0xb00c contains 25 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000c (INIT) 0x8958
0x0000000d (FINI) 0x118d4
0x00000019 (INIT_ARRAY) 0x1b000
0x0000001b (INIT_ARRAYSZ) 4 (bytes)
0x0000001a (FINI_ARRAY) 0x1b004
0x0000001c (FINI_ARRAYSZ) 4 (bytes)
0x00000004 (HASH) 0x8168
0x00000005 (STRTAB) 0x85b0
0x00000006 (SYMTAB) 0x82c0
0x0000000a (STRSZ) 442 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x1b0fc
0x00000002 (PLTRELSZ) 320 (bytes)
0x00000014 (PLTREL) REL
0x00000017 (JMPREL) 0x8818
0x00000011 (REL) 0x8808
0x00000012 (RELSZ) 16 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x6ffffffe (VERNEED) 0x87c8
0x6fffffff (VERNEEDNUM) 2
0x6ffffff0 (VERSYM) 0x876a
0x00000000 (NULL) 0x0
电脑执行上面的命令看结果
离线
#file test
burn: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, stripped#arm-linux-readelf -d test
Dynamic section at offset 0xb00c contains 25 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x0000000c (INIT) 0x8958 0x0000000d (FINI) 0x118d4 0x00000019 (INIT_ARRAY) 0x1b000 0x0000001b (INIT_ARRAYSZ) 4 (bytes) 0x0000001a (FINI_ARRAY) 0x1b004 0x0000001c (FINI_ARRAYSZ) 4 (bytes) 0x00000004 (HASH) 0x8168 0x00000005 (STRTAB) 0x85b0 0x00000006 (SYMTAB) 0x82c0 0x0000000a (STRSZ) 442 (bytes) 0x0000000b (SYMENT) 16 (bytes) 0x00000015 (DEBUG) 0x0 0x00000003 (PLTGOT) 0x1b0fc 0x00000002 (PLTRELSZ) 320 (bytes) 0x00000014 (PLTREL) REL 0x00000017 (JMPREL) 0x8818 0x00000011 (REL) 0x8808 0x00000012 (RELSZ) 16 (bytes) 0x00000013 (RELENT) 8 (bytes) 0x6ffffffe (VERNEED) 0x87c8 0x6fffffff (VERNEEDNUM) 2 0x6ffffff0 (VERSYM) 0x876a 0x00000000 (NULL) 0x0
电脑执行上面的命令看结果
离线
按你上面的截图,文件看不出什么问题,还是从编译工具链找原因。
编译的时候,是不是应该用官方提供的交叉编译工具(arm-linux-gnueabi-gcc),执行arm-linux-gnueabi-gcc -o test test.c,命令输入完也没有报错,然后移植到板子上就出了问题,是不是我移植的过程中出了什么问题啊,我是把二进制文件从虚拟机的共享文件目录拷贝到了桌面,从桌面拷贝到了tf卡,然后把tf卡挂载在板子上运行的。
离线
晕哥 说:按你上面的截图,文件看不出什么问题,还是从编译工具链找原因。
编译的时候,是不是应该用官方提供的交叉编译工具(arm-linux-gnueabi-gcc),执行arm-linux-gnueabi-gcc -o test test.c,命令输入完也没有报错,然后移植到板子上就出了问题,是不是我移植的过程中出了什么问题啊,我是把二进制文件从虚拟机的共享文件目录拷贝到了桌面,从桌面拷贝到了tf卡,然后把tf卡挂载在板子上运行的。
看下是不是这个问题: https://whycan.cn/t_1017.html#p4914
....
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"
....
离线
我尝试着按照他那个方法做了一下,在ct-ng build的时候出现了上面的问题,我也搜了好久,没找到答案。
进行ct-ng menuconfig的时候我就只是改了他所说的这些地方
离线
ng我没有用过,要不试一试这个
按这个套路走一遍: https://whycan.cn/t_2179.html
您当时编译完系统进行测试的时候有没有出现这个情况,就是出现段错误,在板子内不能执行
离线
我想知道,用交叉编译器编译链接的时候用到的库文件和板子里面带的库文件有什么区别?
离线
https://whycan.cn/files/members/1579/none_20190425-0951.png
https://whycan.cn/files/members/1579/none_20190425-0949.png我想知道,用交叉编译器编译链接的时候用到的库文件和板子里面带的库文件有什么区别?
你用的很可能不是同一个 gcc, 意味着板子里面的 libc.so* 对于你自己编译的应用无法配合工作, 导致你的应用需要静态链接才能工作。
离线
我用的官方提供的镜像包一键烧录的,交叉编译器也是官方提供的,然而编译成的二进制文件还是不能在板子上运行,也就是说官方提供的这两个资源不匹配,用的不是同一个gcc
离线