您尚未登录。

楼主 # 2022-03-07 15:03:33

yelong98
会员
注册时间: 2020-06-03
已发帖子: 97
积分: 59.5

builroot工具链问题导致可执行文件运行报错-sh: ./demo: not found

如题,最近在折腾荔枝派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会报错无法编译,特来请教一下踩过坑的老铁们,怎么解决这种问题?

离线

#1 2022-03-07 15:38:59

哇酷小二
管理员
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,387
积分: 1902
个人网站

Re: builroot工具链问题导致可执行文件运行报错-sh: ./demo: not found

执行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





离线

楼主 #2 2022-03-07 19:49:12

yelong98
会员
注册时间: 2020-06-03
已发帖子: 97
积分: 59.5

Re: builroot工具链问题导致可执行文件运行报错-sh: ./demo: not found

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

离线

楼主 #3 2022-03-07 20:01:16

yelong98
会员
注册时间: 2020-06-03
已发帖子: 97
积分: 59.5

Re: builroot工具链问题导致可执行文件运行报错-sh: ./demo: not found

汇报一下进展,现在问题部分解决了,为啥说部分呢,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'
这个有点摸不着头脑,感觉是缺了库里的函数

离线

#4 2022-03-07 20:22:08

哇酷小二
管理员
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,387
积分: 1902
个人网站

Re: builroot工具链问题导致可执行文件运行报错-sh: ./demo: not found

CC 指定 buildroot 目录下 output/host 里面 gcc 的完整绝对路径试一试。





离线

楼主 #5 2022-03-07 20:35:21

yelong98
会员
注册时间: 2020-06-03
已发帖子: 97
积分: 59.5

Re: builroot工具链问题导致可执行文件运行报错-sh: ./demo: not found

设为绝对路径也无用,问题都在libts.so里面,慢慢搜索吧,坑多

离线

#6 2022-03-07 22:03:30

司徒
Moderator
注册时间: 2020-02-13
已发帖子: 547
积分: 157
个人网站

Re: builroot工具链问题导致可执行文件运行报错-sh: ./demo: not found

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)

离线

#7 2022-03-16 16:33:55

岁月快快快
会员
注册时间: 2021-12-25
已发帖子: 61
积分: 72

Re: builroot工具链问题导致可执行文件运行报错-sh: ./demo: not found

就是编译工具链的问题,换成跟buildroot一样的工具链arm-linux-gcc就可以执行了,换成arm-linux-gcc之后编译出错,我是把tslib去掉就不报错了,应该要自己去移植一个tslib,glibc要跟arm-linux-gcc的glibc版本一样

离线

页脚

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

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