我们在封装SDK时,封装后的动态库通常还需要其他的依赖库,这时候最直接的方法,就是通过ldd命令查询有哪些依赖库及对应地址,然后逐个拷贝至自己SDK的依赖库目录里。
上述做法没有问题,但是效率较低,尤其是在工程较大、依赖较多时。
因此,通过下面脚本,可以自动完成上述工作。具体的:
1、在封装的动态库目录,新建脚本 copy.sh
内容如下:
DEP_LIST=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' )
mkdir lib
cp -L -n ${DEP_LIST} lib
2、在该目录下,运行以下命令
sudo sh copy.sh yourLibName.so
即可得到你动态库的所有依赖库,如图