命令:
ldd build/libcaffe_yolo.so | cut -d ">" -f 2 | grep lib | cut -d "(" -f 1 | xargs tar -chvf caffe_yolo_dep.tar
其中build/libcaffe_yolo.so是我要发布的。
ldd 列出所有依赖:
libgnutls.so.26 => /usr/lib/arm-linux-gnueabihf/libgnutls.so.26 (0xaf341000)
libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0xaf32d000)
libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xaf2c6000)
libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0xaf2ab000)
libpixman-1.so.0 => /usr/lib/arm-linux-gnueabihf/libpixman-1.so.0 (0xaf235000)
libxcb-shm.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-shm.so.0 (0xaf22a000)
libxcb-render.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-render.so.0 (0xaf21c000)
libselinux.so.1 => /lib/arm-linux-gnueabihf/libselinux.so.1 (0xaf1fe000)
libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0xaf1e4000)
...
cut 裁剪出每一行的动态库路径;
xargs 捕获cut命令的输出,传递给tar命令,tar打包所有动态库
其他:
- 目标库拷贝到另一个设备上,加载运行,自动(在可见路径中)搜索依赖库,无需将依赖放到新设备的对应路径。
- 我将libcaffe_yolo.so拷贝到另一个设备上后ldd,发现与原设备的依赖库数量相差很大,多了一个tbb库,但少了近100个其他库。搞不明白,很惊奇。