参考文献:Machii
系统版本:Ubuntu 14.04 LTS
Qt开发完成之后,需要拿到没有Qt环境的的系统上运行,需要对其进行发布.发部分为动态发布和静态发布.
- 静态发布:静态发布需要静态编译Qt,我试了下没有成功,比较麻烦,所使用的第三方库也需要重新静态编译.比较麻烦,好处就是以后使用时部署比较简单.
- 动态发布:动态发布就是把可执行文件和其依赖的动态库放在一起并设置变量路径,下面就是动态发布的方法.
1 生成Release版本程序
QtCreate使用Release进行编译,将编译出的可执行程序拷贝到一个单独的目录,例如我放在了桌面的SCserverV1.0文件夹中.
2 准备动态库
可以使用ldd命令查看,用法:
首先cd到可执行程序所在路径下,然后
ldd <可执行程序>
例如:
下面是一个脚本,可以自动查找所需的动态库并复制到制定目录下:
#!/bin/sh
DIR="$( cd "$( dirname "$0" )" && pwd )"
exe="scsmart1.0" #发布的程序名称
des=$DIR #你的路径
deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
sudo cp $deplist $des
新建lddcp.sh,将上述内容复制进去,保存.
打开一个终端,在lddcp.sh所在目录下,执行命令:
chmod +x lddcp.sh #赋予其执行权限
sudo ./lddcp.sh 执行脚本
然后把整个文件夹复制到另一台Ubuntu上执行了
3 配置动态库路径
在终端中打开可执行程序所在路径,输入:
export LD_LIBRARY_PATH=<动态库路径>:$LD_LIBRARY_PATH
可以将此条内容写入.bashrc,这样就不用每次打开终端都设置路径了.
cd ~
gedit ~/.bashrc
然后写入上面那句话.
$4 执行
赋予可执行程序可执行权限:
chmod +x SCserver1_0
然后执行:
./SCserver1_0