QSqlDatabase:QMYSQL驱动程序未加载Ubuntu 15.04 64位 [英] QSqlDatabase: QMYSQL driver not loaded on Ubuntu 15.04 64bits

查看:371
本文介绍了QSqlDatabase:QMYSQL驱动程序未加载Ubuntu 15.04 64位的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Ubuntu 15.04 64位我安装Qt5.6(在线安装程序),同时试图将我的开发环境从Windows 7移动到Linux我面临以下问题:

  SqlDatabase:QMYSQL驱动程序未加载

http://stackoverflow.com/questions/14667768/qmysql-driver-available-but-not-loaded\">这是,我设法找到〜/ Qt / 5.6 / gcc_64 / plugins /sqldrivers/libqsqlmysql.so ,然后:

  $ ldd libqsqlmysql.so 
linux -vdso.so.1 => (0x00007ffffd571000)
libmysqlclient_r.so.16 =>未找到
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1(0x00007fe94ef24000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1(0x00007fe94ecec000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1(0x00007fe94ead2000)
libssl.so.10 =>未找到
libcrypto.so.10 =>未找到
libQt5Sql.so.5 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libQt5Sql.so.5(0x00007fe94e88d000)
libQt5Core.so.5 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libQt5Core.so.5(0x00007fe94e17a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0(0x00007fe94df5c000)
libstdc ++。so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6(0x00007fe94dc4d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6(0x00007fe94d944000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1(0x00007fe94d72e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6(0x00007fe94d364000)
libicui18n.so.56 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libicui18n.so.56(0x00007fe94cec9000)
libicuuc.so.56 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libicuuc.so.56(0x00007fe94cb11000)
libicudata.so.56 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libicudata.so.56(0x00007fe94b12e000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2(0x00007fe94af29000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0(0x00007fe94ad27000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1(0x00007fe94ab1f000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0(0x00007fe94a80f000)
/lib64/ld-linux-x86-64.so.2(0x000056024837f000)
libpcre.so.3 = > /lib/x86_64-linux-gnu/libpcre.so.3(0x00007fe94a5a2000)

告诉 libmysqlclient_r.so.16 =>找不到。事实上,它似乎有一个更新的版本:

  find / -name libmysqlclient_r * 
/ usr / lib / x86_64-linux-gnu / libmysqlclient_r.so.18
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18.1.0
/ usr / lib / x86_64-linux-gnu / libmysqlclient_r。所以
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.a

也许问题。可以有人确认吗?

解决方案

首先,请检查您是否有包含 libssl的软件包。所以安装了 libcrypto.so libmysqlclient_r.so



然后,你的问题是你有那些共享的对象与不同的SONAME,签名



因此:

ol>
  • 安装上面发现的包的开发版本 libssl-dev mysql-client-dev 或类似)。


  • 从您的Qt安装中运行 MaintenanceTool ,并确保选择安装Qt的源代码


  • 进入 QTDIR / 5.6 / Src / qtbase / src / plugins / sqldrivers / mysql /

    ,即来自该安装的Qt(不是系统宽的或类似的)。最好的方法是提供完整的路径: QTDIR / 5.6 / gcc_64 / bin / qmake


  • 运行 make 。希望这将只是工作™;如果它抱怨一些缺少的库,安装它们并重新运行 make


  • 一个新的 libqsqlmysql.so 插件;



  • In Ubuntu 15.04 64 bits I installed Qt5.6 (online installer) and while trying to move my development environment from Windows 7 to Linux I faced the following:

    SqlDatabase: QMYSQL driver not loaded
    

    Following this, I managed to find ~/Qt/5.6/gcc_64/plugins/sqldrivers/libqsqlmysql.so and then:

    $ ldd libqsqlmysql.so
        linux-vdso.so.1 =>  (0x00007ffffd571000)
        libmysqlclient_r.so.16 => not found
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe94ef24000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fe94ecec000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fe94ead2000)
        libssl.so.10 => not found
        libcrypto.so.10 => not found
        libQt5Sql.so.5 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libQt5Sql.so.5 (0x00007fe94e88d000)
        libQt5Core.so.5 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libQt5Core.so.5 (0x00007fe94e17a000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe94df5c000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe94dc4d000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe94d944000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe94d72e000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe94d364000)
        libicui18n.so.56 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libicui18n.so.56 (0x00007fe94cec9000)
        libicuuc.so.56 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libicuuc.so.56 (0x00007fe94cb11000)
        libicudata.so.56 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libicudata.so.56 (0x00007fe94b12e000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe94af29000)
        libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fe94ad27000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe94ab1f000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fe94a80f000)
        /lib64/ld-linux-x86-64.so.2 (0x000056024837f000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe94a5a2000)
    

    Tells libmysqlclient_r.so.16 => not found. In fact, it seems I have a newer version:

    find / -name libmysqlclient_r*
    /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18
    /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18.1.0
    /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so
    /usr/lib/x86_64-linux-gnu/libmysqlclient_r.a
    

    Perhaps that's the problem. Could some one confirm? How should I proceed?

    解决方案

    First and foremost, double check that you have the packages containing libssl.so, libcrypto.so and libmysqlclient_r.so installed (looks like you have this last one, it's extremely likely you also have the first two, but just double check).

    Then, your problem is that you have those shared objects with a different SONAME, sign that they're binary incompatible with the plugin shipped with Qt, which therefore needs to be recompiled.

    Therefore:

    1. install the development versions of the packages found above (libssl-dev, mysql-client-dev or similar).

    2. run the MaintenanceTool from your Qt installation, and be sure to select to install Qt's source code too.

    3. Go in QTDIR/5.6/Src/qtbase/src/plugins/sqldrivers/mysql/.

    4. Run the right qmake, i.e. the one coming from that installation of Qt (not the system wide one or similar). Best way to be sure is providing the full path to it: QTDIR/5.6/gcc_64/bin/qmake.

    5. Run make. Hopefully this will just work™; if it complains about some missing libraries, install them and rerun make.

    6. This should now have produced a new libqsqlmysql.so plugin; overwrite the old one with this new one.

    这篇关于QSqlDatabase:QMYSQL驱动程序未加载Ubuntu 15.04 64位的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆