参考文献:
- 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文件