全志平台Tina系统第三方软件包移植缺少库依赖解决办法
全志平台Tina系统第三方软件包移植缺少库依赖解决办法
【适用范围】
全志平台Tina系统
【问题现象】
在移植第三方软件包或库时,编译过程中没有出现问题,但在最后时刻显示missing dependencies for the following libraires:
意味着,编译通过,但是最后打包时的检查发现缺少库。
这个问题在移植第三方软件包时经常出现,如在编译lcd_test时,显示错误:
【复现步骤】
- source build/envsetup.sh && lunch 并选择当前方案(tina2.0以上)或source scripts/setenv.sh(tina1.0)
- 在make menuconfig中选择编译指定的第三方软件包/库
- 在对应软件包目录下执行 mm -B
- 编译过程中除最后missing dependencies无其他错误
【解决方案】
本问题解决方法很简单,在package Makefile中的Package DEPENDS中增加丢失库文件相应的库名即可,如本例:
增加+libjson-c 即可。
但是用户通常并不知道库名是什么,很多时候也并不是简单的在丢失的库前加lib即可,很多时候开发者碰到这个问题在寻找丢失库的名称时需要耗费很久。
由于本问题是通用问题,如果有其他库missing的解决方法如下。
解决步骤:
1.在out 目录搜索该丢失库,以本例为准:
2.从结果得知本库来自于json-c-0.12包
3.按照Tina Package的标准,可以猜测本名字来源为Package名字json-c,版本号0.12,在/package目录下搜索这两个关键字,可以得到包的来源
4.进入/libs/libjson-c/Makefile,可以看到,与猜测符合,可以确定来自这个库:
5.在Makefile中寻找,我们要找的的库名通常在Package install部分中可以找到对应关系:
6.将名称以+libjson-c的形式加到要移植的第三方库Makefile的DEPENDS:后即可解决问题。
【验证方法】
在第三方软件的目录下执行mm -B
编译通过并正确打包即可。
【注意事项】
库名通常和丢失的库名称相近,如丢失libjson-c.so.2,可能丢失的库名为libjson-c
但很多时候,库名可能并不相同,这时候增加不对应的库无法解决问题,而且还会在试探中浪费很多时间。
如:
libcrypto.so 来自于openssl-libs而不是libcrypto.