本文参考自:https://blog.youkuaiyun.com/weixin_43053387/article/details/88080577
首先创建可执行文件的文件夹,我们打包的可执行文件依赖的动态库都会被打包到该文件下。
将可执行文件MyApp拷贝到该目录下.
mkdir release_dir
cp MyApp release_dir
进入该文件夹下,创建打包脚本文件,将exe变量改为对应的可执行文件名称
#!/bin/sh
#你需要发布的程序名称
exe="MyApp"
#可执行程序所在目录
des=$PWD
deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des
然后给脚本文件可执行权限,然后在该目录下运行脚本,会将依赖的共享库都拷贝到该目录下
chmod a+x pack.sh
./pack.sh
之后创建执行脚本MyApp.sh(脚本名字最好与可执行文件一致)
#!/bin/sh
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 "$@"
之后我们就可以在终端中执行该脚本来运行程序
./MyApp.sh
遇到的问题:
若执行程序出现段错误,可能是因为导出的共享库与系统的共享库发生了冲突,将发生冲突的共享库删掉就行了(删掉导出的共享库)