Linux打包QT程序时提示找不到QMYSQL驱动

Linux Qt发布打包的程序到另外一个没有安装Qt环境的Linux系统,首先要将所有依赖的动态链接库全部找到,例如libQtCore.so和本次的重点libqsqlmysql.so。将上述文件全部拷贝到目标机器上以后,先要ldd libqsqlmysql.so看看是否依赖齐全,如果提示libmysqlclient.so找不到,那就安装libmysqlclient18或libmysqlclient.so(取决于提示)。

1
sudo apt-get install libmysqlclient18

因为启动Qt程序的时候,需要指定环境变量,解决办法1:将环境变量直接写进 /etc/profile里面,2,使用shell脚本启动,将环境变量写在脚本里面,本例采取这种方式(影响最小,环境变量是临时的)。run.sh脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh

bindir=`dirname "$0"` #获取当前shell脚本目录

libdir=`cd "$bindir/lib";pwd`

QTDIR=${bindir} #指定QT的目录和可执行程序一个目录

QT_PLUGIN_PATH=`cd "$bindir/lib/plugins";pwd` #指定QT查找plugins的目录,关键

LD_LIBRARY_PATH=${libdir}:${LD_LIBRARY_PATH} #指定QT依赖库的路径(eg libQtCore.so)

PATH=$bindir:${PATH} #给当前路径程序添加到PATH环境变量中

export PATH LD_LIBRARY_PATH QTDIR QT_PLUGIN_PATH

exec "$bindir/test" #启动程序

值得注意的是目录结构,根据上述脚本,我们将qt的依赖库拷贝到lib下,然后在lib下新建文件夹plugins,在plugins下新建sqldrivers文件夹,然后将libqsqlmysql.so文件放在sqldrivers下,qt程序启动之后就会去该目录下查找可用的数据库驱动,同理libqsqlite.so。


Linux打包QT程序时提示找不到QMYSQL驱动
http://yoursite.com/2019/01/28/Linux打包QT程序时提示找不到QMYSQL驱动/
作者
还在输入
发布于
2019年1月28日
许可协议