C++学习笔记(八) - Qt 发布(动态链接发布)

参考文献:Machii
系统版本:Ubuntu 14.04 LTS
Qt开发完成之后,需要拿到没有Qt环境的的系统上运行,需要对其进行发布.发部分为动态发布和静态发布.

  • 静态发布:静态发布需要静态编译Qt,我试了下没有成功,比较麻烦,所使用的第三方库也需要重新静态编译.比较麻烦,好处就是以后使用时部署比较简单.
  • 动态发布:动态发布就是把可执行文件和其依赖的动态库放在一起并设置变量路径,下面就是动态发布的方法.

1 生成Release版本程序

QtCreate使用Release进行编译,将编译出的可执行程序拷贝到一个单独的目录,例如我放在了桌面的SCserverV1.0文件夹中.

2 准备动态库

可以使用ldd命令查看,用法:
首先cd到可执行程序所在路径下,然后
ldd <可执行程序>
例如:

C++学习笔记(八) - Qt 发布(动态链接发布)_第1张图片
ldd 用法.png

下面是一个脚本,可以自动查找所需的动态库并复制到制定目录下:

#!/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

你可能感兴趣的:(C++学习笔记(八) - Qt 发布(动态链接发布))