1.把你要发布的程序单独放到一个文件夹下
2.在文件夹下创建一个sh脚本名为pack.sh
输入以下内容
#!/bin/sh
exe="app" #你需要发布的程序名称
des="/home/zzh/RadarDataHub" #程序所在路径
deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des
脚本很简单,就是利用ldd获取程序依赖库,然后找到依赖路径,通过cp命令caopy过来。
你也可以自己通过ldd命令看到库路径
然后执行
sh ./pack.sh
执行完成之后你会发现所需依赖环境都copy到程序所在路径下了
然后在当前路径下创建一个sh脚本,你可以随意起个名字
touch test.sh
输入如下内容
#!/bin/sh
appname=app #要运行的程序名
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
上面这段代码会自动根据当前用户运行路径来自动配置程序依赖库路径。
然后运行:
sh ./test.sh
一直以sh方式运行不太好,我们可以赋予它可执行权限,并改个名字,这样看起来就和运行程序没有区别了
mv test.sh test
chmod 777 test
然后在运行
./test
这样你把这个程序发布给其它平台就无需配置用户的/usr/local/lib路径了。