2

我在这里有以下问题。我正在用 Qt 编写一个多平台(Linux/Windows)应用程序。

问题在于 Linux:我静态编译 Qt 以摆脱 Qt 库(并且为了拥有一个大的可执行文件),以下是我的配置行:

./configure -qt-sql-mysql -static -prefix ~/qt-4.6.3-static -platform linux-g++ -I /usr/include/mysql -opensource -webkit

还有一些不那么重要的参数。我使用qt 4.6.3,因为4.7不支持webkit的静态链接,webkit用于应用程序的帮助系统。现在,应用程序也在使用 MySql,我想让 QT 暂时处理 mysql 的东西,所以我告诉他将它链接到 (qt-sql-mysql)。当我分发应用程序时,主要问题出现了:

现在我在 CentOS 6 上开发,显然 CentOS 6 带有他自己的 MySQL 库 (16),当我将应用程序移动到具有 18 版 mysql 库的 Linux Mint 13 盒子时,应用程序不再启动,只是以下内容熟悉的错误:

./ddm: error while loading shared libraries: libmysqlclient_r.so.16: cannot open shared object file

(是的,我已经安装了 libmysqlclient-dev)

所以现在我的困境是:我希望尽可能多的 Linux 用户可以使用该应用程序,而不必为每个平台单独构建安装包。

问题来了:你知道构建 Qt 以使其静态链接到 libmysql 的方法吗?我想摆脱这条线:

$ ldd ./ddm | grep mysql
    libmysqlclient_r.so.16 => not found

来自应用程序的动态依赖项。

或者,只要我不需要为所有平台制作单独的安装包,任何其​​他建议都是受欢迎的。

谢谢

4

0 回答 0