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