如题,最近在折腾荔枝派zero运行lvgl,发现编译出来的demo放进v3s板子里, 运行一直报错-sh: ./demo: not found
# ldd demo
checking sub-depends for 'not found'
checking sub-depends for 'not found'
checking sub-depends for 'not found'
libm.so.6 => not found (0x00000000)
libts.so.0 => not found (0x00000000)
libc.so.6 => not found (0x00000000)
/lib/ld-linux-armhf.so.3 => /lib/ld-linux-armhf.so.3 (0x00000000)
ldd命令发现有不少so文件缺少,从工具链的地址里面找到相关so库,放到v3s板子里面,还是不能运行。
在 https://whycan.com/t_6679.html 帖子里面跟帖,经过小二哥的提示,需要用编译文件系统的同一个gcc编译 lvgl。
查看了一下buildroot-2019.08里面的配置,用的是内置工具链,然后坛子翻帖子,又找到一个和我一样情况的兄弟
https://whycan.com/t_2827.html#p23139 最后一楼的现象和我一模一样,现在要做的就是用buildroot自带的工具链去编译应用软件。
根据晕哥在帖子里面的提示,buildroot自带的工具链位置在buildroot-2019.08/output/host/bin
新的问题来了,lvgl的makefile用的是CC = arm-linux-gnueabihf-gcc
buildroot自带的工具链位置buildroot-2019.08/output/host/bin里面没有这个编译器,
lvlg项目的Makefile用CC = arm-linux-代替CC = arm-linux-gnueabihf-gcc,make会报错无法编译,特来请教一下踩过坑的老铁们,怎么解决这种问题?
离线
执行file命令:
$ file lvgl_demo
./buildroot_smallwitpi_dreamer_v1/lv_port_linux_frame_buffer_whycan_v3s/lvgl_demo: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=b36c9debd5a600267d25d3fbbb37176852ee9fea, with debug_info, not stripped
离线
file demo
demo: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=48b3e7984f2a6a68de71957c385a5e4ac1d0e2d5, with debug_info, not stripped
离线
汇报一下进展,现在问题部分解决了,为啥说部分呢,lvgl8的工程还是照样报错无法编译。
但是编译helloworld是可以了,办法是按照晕哥和小二哥的办法,将交叉编译器指定为buildroot的默认编译器,即arm-linux-gcc。
但是如果将lvgl的makefile里面改为CC = arm-linux-gcc,编译报错
lvgl-8.1/tslib/libts.so: undefined reference to `snprintf@GLIBC_2.4'
libts.so: undefined reference to `__errno_location@GLIBC_2.4'
/lvgl-8.1/tslib/libts.so: undefined reference to `strpbrk@GLIBC_2.4'
这个有点摸不着头脑,感觉是缺了库里的函数
离线
设为绝对路径也无用,问题都在libts.so里面,慢慢搜索吧,坑多
离线
libts.so 和 arm-linux-gcc 本身就不在一致的libc.so上面,意思就是各自編譯的libc.so版本不一致所致,你可以使用如下命令查看(如下是Miyoo範例):
$ strings xxx/arm-linux-gcc | grep -i glibc
GLIBC_2.14
GLIBC_2.3
GLIBC_2.2.5
$ strings xxx/libts.so | grep -i glibc
最近编辑记录 司徒 (2022-03-07 22:04:54)
离线
就是编译工具链的问题,换成跟buildroot一样的工具链arm-linux-gcc就可以执行了,换成arm-linux-gcc之后编译出错,我是把tslib去掉就不报错了,应该要自己去移植一个tslib,glibc要跟arm-linux-gcc的glibc版本一样
离线