关于如何打包在利用qt编译的程序,通常都建议使用linuxdeployqt ,可是我的感受这个东西不可靠,有几点:linux
- 库找不齐
- 若是你在此以前使用了apt-get install 安装qmake ,这个linuxdeployqt会自动选择你经过apt安装的qmake而不选择你从qt官网上下载安装的qt(大坑)
- linuxdeployqt作的事情,咱们能够手动完成
1、Qt下选择releaze编译程序ubuntu
(1)新建一个qml程序bash
(2)选择release下编译运行测试
2、 开始打包ui
(1)找到release的文件夹,取里面的可执行文件,我这里是 qmltest插件
(2)将该可执行文件随便复制到一个新的目录下,该目录是咱们打包的目录日志
(3)使用ldd查看一下,该可执行文件依赖什么库,齐不齐code
(4)建立一个lib文件夹,用来存放这些ldd查找出来的库文件blog
mkdir lib
(5)在pack文件夹下,建立一个copy.sh文件,是个脚本,用来将ldd找到的库文件复制到lib文件夹下,字符串
copy.sh内容以下
#! /bin/bash #执行脚本时在终端输入 ./copy.sh ./test ./copy #其中./test为ldd所要查看的可执行程序的路径,./copy为依赖文件最终拷贝到的文件夹路径 #如下三个参数为终端输入 # $0 为 ./copy.sh # $1 为 ./test # $2 为 ./copy # awk 后 $0,$1,$2为终端日志的字符串,以空格为分隔符,只在awk本行起做用 #将字符串重定向到dependList dependList=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' ) #输出 ./test #echo $1 #拷贝依赖 cp $dependList $2 #拷贝可执行程序 cp $1 $2
(6)在pack文件夹下,执行以下命令
sudo chmod +x copy.sh
./copy.sh qmltest ./lib/
执行完成以后,能够看到lib文件夹下已经有程序运行所需的库了,
这里须要删除一个库文件libc.so.6(不删除的话,复制到其余电脑上会出问题)
(7) 复制qt程序运行所需的插件
找到你Qt的安装路径,我这里是:
进入路径gcc_64
将plugins和qml两个文件夹复制到咱们的打包目录pack下,
(8)编写qt.conf文件,这是个配置文件,用来告诉qt编译的程序,所需的库、插件这些去哪里找,
qt.conf文件内容以下:
[Paths] Prefix = ./ Plugins = plugins Imports = qml Qml2Imports = qml
(9)到这里,打包完成
(10)双击可执行文件,便可运行
总结: