银河麒麟V10,Qt5.9.9,UnixOdbc,编译QODBC的libqsqlodbc.so

编译QT的ODBC驱动

前期准备:

  1. 银河麒麟V10 arm 64位操作系统;

  2. QT5.9.9版本已安装;

  3. 达梦数据库DM8已安装;

  4. UnixOdbc驱动已安装。

编译QT的odbc驱动
1.修改qsqldriverbase.pri
  • 进入QT源码目录修改qsqldriverbase.pri 文件,目录:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/qsqldriverbase.pri,可以使用vi或vim修改,也可使用文档编辑器进行修改;

    //qsqldriverbase.pri目录位置
    root@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers# pwd
    /home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers
    
  • 修改include内容,将qtsqldrivers-config.pri替换为configure.pri,注意有些教程是修改成…/sqldrivers/configure.pri,自己试了编译后找不到路径,还是按下面的修改编译成功,qtsqldrivers-config.pri和configure.pri本身在同一级目录;

    QT  = core core-private sql-private
    
    # For QMAKE_USE in the parent projects.
    #include($$shadowed($$PWD)/qtsqldrivers-config.pri)
    include($$shadowed($$PWD)/configure.pri)
        
    PLUGIN_TYPE = sqldrivers
    load(qt_plugin)
    
    DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
    
2.修改odbc.pro文件
  • 修改QT源码目录odbc.pro文件,注释QMAKE_USE += odbc,目录:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc,可以使用vi或vim修改,也可使用QCreator进行修改;

    //odbc.pro目录位置
    root@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc# pwd
    /home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc
    root@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc# ll
    总用量 124
    drwxrwxrwx  2 adminyw adminyw  4096 12月  3  2019 ./
    drwxrwxrwx 11 adminyw adminyw  4096 1月   2 10:13 ../
    -rwxrwxrwx  1 adminyw adminyw  2592 12月  3  2019 main.cpp*
    -rwxrwxrwx  1 adminyw adminyw    38 12月  3  2019 odbc.json*
    -rwxrwxrwx  1 adminyw adminyw   236 12月  3  2019 odbc.pro*
    -rwxrwxrwx  1 adminyw adminyw 93155 12月  3  2019 qsql_odbc.cpp*
    -rwxrwxrwx  1 adminyw adminyw  4253 12月  3  2019 qsql_odbc_p.h*
    -rwxrwxrwx  1 adminyw adminyw   199 12月  3  2019 README*
    
  • 修改odbc.pro文件;

root@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc# vi odbc.pro 

在这里插入图片描述

3.编译odbc驱动
  • 查找INCLUDEPATH 和 LIBS 的目录位置,这两个位置是UnixOdbc安装时的两个路径,我的路径在/usr/local/unixodbc/include和/usr/local/unixodbc/lib;

  • 在odbc.pro目录下执行qmake,如果qmake已添加到环境变量,可以直接使用qmake,如果没有添加,可使用/usr/local/Qt-5.9.9-release/bin/qmake,该路径是我安装QT的目录,qmake执行成功后,再执行make -j4,会在/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/plugins/sqldrivers目录下生成libqsqlodbc.so;

    //QT安装路径
    root@adminyw-pc:/usr/local/Qt-5.9.9-release/bin# pwd
    /usr/local/Qt-5.9.9-release/bin
    //在odbc.pro目录下执行以下语句
    /*
    qmake "INCLUDEPATH+=/usr/local/unixodbc/include" "LIBS+=-L/usr/local/unixodbc/lib -lodbc" ./odbc.pro
    qmake:/usr/local/Qt-5.9.9-release/bin/qmake
    INCLUDEPATH和LIBS:UnixOdbc安装路径
    ./odbc.pro:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc/odbc.pro*/
    //执行qmake
    adminyw@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc$ qmake "INCLUDEPATH+=/usr/local/unixodbc/include" "LIBS+=-L/usr/local/unixodbc/lib -lodbc" ./odbc.pro
    //执行make -j4
    adminyw@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc$ make -j4
    rm -f libqsqlodbc.so
    g++ -Wl,--no-undefined -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,\$ORIGIN/../../lib -shared -o libqsqlodbc.so .obj/qsql_odbc.o .obj/main.o .obj/moc_qsql_odbc_p.o  -L/usr/local/unixodbc/lib -lodbc -L/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/lib -lQt5Sql -lQt5Core -lpthread  
    mv -f libqsqlodbc.so /home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/plugins/sqldrivers/libqsqlodbc.so 
    
4.拷贝libqsqlodbc.so

拷贝libqsqlodbc.so到/usr/local/Qt-5.9.9-release/plugins/sqldrivers目录下,该目录是QT安装目录,至此QODBC的动态库编译完成。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值