银河麒麟64bit配置64bit达梦和qt4.8.6-32bit

本次使用银河麒麟64操作系统以及64位达梦数据库,但是由于Qt程序依赖32位的库,所以需要配置32位unixodbc连接达梦数据库。

安装达梦数据库64bit

达梦数据库使用Java开发,所以依赖jdk,系统自带的是openjdk64bit,所以下载64bit的达梦镜像iso文件,直接解压缩。

1
2
3
cd 解压缩文件夹
chmod 777 DMINSTALL
./DMINSTALL

这里推荐使用普通用户安装,默认安装在/home/user/dmdbms/,如果采用root用户安装,那么安装路径会在/opt/dmdbms下,安装完成之后配置环境变量LD_LIBRARY_PATH,达梦数据库会自动创建一个dmdba的系统用户,密码默认和用户名一样,这个用户是用来管理达梦数据库的,达梦数据库安装是user和group都是使用它自己的,所以在你的账户是无法使用他的管理工具,但是对后续的配置没有影响。

安装达梦数据库32bit

安装32bit的jdk

  1. 去官网下载32bit的jdk安装包

  2. 解压

  3. 配置环境变量 sudo vi /etc/profile

    1
    2
    3
    4
    export JAVA_HOME=/usr/lib/jvm/jdk7
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH

    4.source /etc/profile生效

配置默认jdk

一些linux环境可能存在默认的jdk配置,这时候需要我们进行默认jdk的配置(相当于同时保留32bit和64bit的jdk方便切换)。

1
2
3
4
5
sudo update-alternatives --config java  #查看当前java配置并选择
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk7/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk7/bin/javac 300
sudo update-alternatives --config java #查看当前java配置并选择
java -version #测试是否成功

安装32bit的达梦数据库

类似于安装64bit,只不过在运行安装程序时虽然前面已经配置了32bit的jdk,但是还缺少32bit的libXtst.so.6

1
sudo apt-get install libxtst-dev:i386 #x小写

此时会提示libxi:i386依赖没有安装,所以强行安装libxi-dev:i386(会破坏系统某些库的依赖,导致系统的home按钮无法使用,但是有终端就ok了,不影响)。

1
2
sudo apt-get install libxi-dev:i386
sudo apt-get install libxtst-dev:i386

然后运行32bit的达梦数据库安装包,只安装驱动即可。安装完配置驱动库的环境变量。

安装系统32bit编译环境

1
2
3
4
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install gcc-multilib g++multilib

安装unixodbc-32bit

  1. 去官网下载unixodbc 32bit的包

  2. tar -zxvf unixodbc.tar.gz

  3. cd 
    CFLAGS=-m32 LDFLAGS=-m32 CXXFLAGS=-m32 ./configure --prefix==/usr/local/unixODBC-32bit --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
    
    make
    sudo make install
    
    1
    2
    3
    4
    5
    6
    7

    ## 配置odbc环境变量以及达梦数据库数据源

    这里的-m32是指使用32bit的编译器,所以以后编译32bit的软件都可以参考此思路,本质就是使用gcc main.c -m32,但是这种集成化安装方式只能在configure 里面设置编译参数。因为前面的配置参数里面把odbc的安装路径都设置到了系统的环境变量里面了,所以odbc的环境变量就不需要设置了。

    ```powershell
    odbcinst -j #查看odbc的ini配置路径

配置达梦驱动

1
sudo vi /etc/odbcinst.ini

内容如下:

1
2
3
4
[DM7]   

Description = dm odbc
Driver = /opt/dmdbms/bin/libdodbc.so #此处是32bit的达梦驱动

配置达梦数据源

1
sudo vi /etc/odbc.ini

内容如下:

1
2
3
4
5
6
7
8
[DM7]

Description = dm7 dsn
Driver = DM7
SERVER =127.0.0.1
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

测试是否成功

1
isql DM7 -v      #如果失败-v会提示错误信息

编译32bit的libqsqlodbc.so驱动

32位qt的编译此处略过不谈。

1
2
3
4
cd qt-everywhere-qt4.8.6/src/plugins/sqldrivers/odbc
qmake #本来此处是依赖odbc的include和lib的,但是前面已经将odbc安装到系统路径,所以不需要添加INCLUDEPATH 和LIBS
make
sudo make install #此处会自动将libqsqlodbc.so 拷贝到QTDIR的数据库驱动文件夹

##使用Qt代码测试连接

1
2
3
4
5
6
7
8
9
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DM7"); #DM7就是前面配置的odbc数据源名称
db.setHostName("localhost");
db.setPort(5236);
db.setUserName("SYSDBA");
db.setPassword("123456789");
if(!db.open()){
qDebug()<<db.lastError();
}

银河麒麟64bit配置64bit达梦和qt4.8.6-32bit
http://yoursite.com/2019/01/15/银河麒麟64bit配置64bit达梦和qt4-8-6-32bit/
作者
还在输入
发布于
2019年1月15日
许可协议