全志R16平台应用程序库依赖问题解

R16应用程序库依赖问题解

一. 主机ubuntu系统查库依赖:
通过ldd 命令查找,(没有路径,只有地址的表示已经加载到内存了)
这里写图片描述
二. 主机查找交叉编译的程序库依赖:
通过交叉编译程序arm-openwrt-linux-readelf -d xxx-elf-file
这里写图片描述
这个方法有两个缺点
1. 只能看到直接依赖的库文件,有些库还依赖其他的库看不到,必须再次 readelf了
2. 在真正实际运行的时候,这些库不一定真正存在。
三. 小机Tina系统查找库依赖:
目前tina没有ldd 命令脚本,我们通过连接器ld-musl-armhf.so.1直接查找
ld-musl-armhf.so.1 –list xxx-elf-file
这里写图片描述
四. 如果找不到库咋办?
比如我们把libsmartlinkd_client.so 删除后,就会出现下如下情况,运行就会出现问题

这里写图片描述
使用 ld-musl-armhf.so.1 同样出现找不的问题。
这里写图片描述
解决对策:
1. 缺失库–添加对应的库, 放入目录 /lib
2. 库存在,位置不对–可以通过-rpath=指定路径来解决
这里写图片描述
3. 库存在,位置不对–可以通过LD_LIBRARY_PATH的环境变量来解决。
修改/etc/profile 增加 LD_LIBRARY_PATH=/usr/ethan:$LD_LIBRARY_PATH
然后测试和 运行就是OK的。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43094346/article/details/82563845