在release模式下编译代码,将生成的release文件复制到自己的执行文件夹中,我这里是放在/home/orangepi/output中.
在output文件夹中新建脚本‘cplib.sh’:
(此脚本会将程序依赖库复制到当前文件夹中)
#!/bin/sh
exe="vivoMES" # 修改发布程序的名称
des="/home/orangepi/output/" # 修改输出可执行文件路径
deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des
在output文件夹中新建脚本`vivoMES.sh`:(请将脚本名称设置为可执行文件同名)
此脚本会执行程序.
#!/bin/sh
sleep 10 # 保证系统完成初始化后再启动目标程序
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
给脚本上权限`chmod +x cplib.sh`;`chmod +x vivoMES.sh`.
运行`cplib.sh`: bash /home/orangepi/output/cplib.sh
此时执行文件依赖的库都会被赋值到o