环境
Ubuntu 16.04LTS
QT
具体过程
- 打开QT Creator,新建一个名为test的项目;
- 在项目中编辑任意内容;
- 在QT Creator下使用Release编译;
(Debug编译的文件比较大,而Release小很多) - 从编译过程中生成的文件中找到文件名为test的可执行文件,复制;
- 在任意位置新建一个文件夹,将test粘贴进去;这里我新建文件夹名为R_Test
- (可选)在终端下输入 ldd test 查看需要的链接库;
- 把需要的链接库导出;
导出利用下面这个脚本:
#!/bin/sh
exe="test" #可执行文件的名字
des="/home/xx/R_Test" #刚才创建的文件夹的路径
deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des
在R_Test中新建一个文件命名为loadlib.sh,将上面那段脚本复制进去。
注意:两个注释的地方需要改成对应的内容,因人而异
- 新建一个test.sh文件,仍然放在R_Test下面(.sh文件命名必须与可执行文件名字一样例:可执行文件名 test, .sh 文件名为 test.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 "$@"
- 执行两个.sh文件
# 加载需要的包
./loadlib.sh
# 运行test可执行文件
./test.sh
# 如果上面的命令不能运行,更改权限
# 先执行下面两条命令更改权限,然后在执行上面两条命令运行两个文件
chmod +x loadlib.sh
chmod +x test.sh
将这个文件拷贝到其他主机即可运行。
到此,打包完成。