Linux 下打包可执行程序所有依赖的so 库
1、linux中通过ldd 可以查询一个执行程序的依赖的所有so库:
例如:ldd groundSegment
linux-vdso.so.1 => (0x00007ffcecb79000)
libroscpp.so => not found
librosconsole.so => not found
libroscpp_serialization.so => not found
librostime.so => not found
libpcl_common.so.1.8 => /usr/lib/libpcl_common.so.1.8 (0x00007fb9308c4000)
libboost_system.so.1.58.0 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0 (0x00007fb9306c0000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb9304a3000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb930121000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb92fe18000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb92fc02000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb92f838000)
libboost_thread.so.1.58.0 => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.58.0 (0x00007fb92f612000)
libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007fb92f3f0000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb930e89000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb92f1e8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb92efe4000)
2、拷贝ldd 的查询结果到指定目录
ldd groundSegment | awk '{print $3}' | xargs -i cp -L {} ./lib
3、有依赖的so 库都被拷贝到指定目录
在没有安装环境的linux 系统中加入下面环境变量进行测试
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:(./lib的绝对目录)