参考文献:
- Linux(ubuntu)下打包C++代码并运行于其他ubuntu上
- linux C++打包程序总结
- Linux shell 中获取当前目录的方法
- Linux shell路径变量出现空格时的处理方法
假设编译了一个 cmd
可执行文件,想要把它交给其他人运行。
找到动态库
- 首先新建一个文件夹
exe
,并把cmd
复制进去 - 在文件下新建
lib
文件夹,用于存储依赖的动态库 - 执行如下的
packlib.sh
文件,找出cmd
所依赖的动态库#!/bin/sh exe="./cmd" #发布的程序名称 des="./lib" #创建文件夹的位置 deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }') cp $deplist $des
链接动态库
- 执行如下的
run.sh
文件,
下面这个写法更好些,#!/bin/sh appname=cmd #要运行的程序名 dirname="$PWD"/lib #依赖库路径 LIBRARY_PATH=$dirname export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LIBRARY_PATH} "$PWD"/$appname "$@"
#!/bin/sh SHELL_FOLDER=$(cd "$(dirname "$0")";pwd) export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${SHELL_FOLDER}/lib "$SHELL_FOLDER"/cmd "$@"
- 成功执行
cmd
文件