windows c++ 项目移植到 linux,原项目需要连接 Firebird数据库。

google 后知道 linux qt connection Firebird 有两种方法:

  • 1.ibpp connection firebird;
  • 2.QSqlDatabase: QIBASE driver connection Firebird;

Linux 环境编译libqsqlibase.so

  1. 安装Centos7.2 桌面、安装qt5.5 ;
  2. Install GCC Compiler on CentOS7
sudo yum group install "Development Tools"
sudo yum install man-pages
gcc --version
  1. Installing the Firebird Database Server on CentOS 7

  2. 报:QSqlDatabase: QIBASE driver not loaded 需要自己编译 QIBASE driver 生成libqsqlibase.so

  • 参考下面方法
https://forum.qt.io/search?term=libqsqlibase.so&in=posts&matchWords=all&sortBy=relevance&sortDirection=desc&showAs=posts
  • 毕竟环境和网上不完全一样,可能会遇到一些问题。
[root@Desk001 ~]# find / -name ibase
/opt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/ibase
/opt/Qt5.5.1/5.5/Src/qtbase/src/sql/drivers/ibase
/opt/Qt5.5.1/5.5/Src/qtbase/config.tests/unix/ibase
[root@Desk001 ~]# cd /opt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/ibase
[root@Desk001 ibase]# /opt/Qt5.5.1/5.5/gcc_64/bin/qmake ibase.pro
[root@Desk001 ibase]# ll
total 60
-rwxrwxr-x. 1 root root 29 Oct 13 2015 ibase.json
-rwxrwxr-x. 1 root root 187 Dec 16 22:50 ibase.pro
-rwxrwxr-x. 1 root root 2254 Oct 13 2015 main.cpp
-rw-r--r--. 1 root root 46701 Dec 16 23:09 Makefile [root@Desk001 ibase]# chmod 775 Makefile
[root@Desk001 ibase]# make
报错
../../../sql/drivers/ibase/qsql_ibase_p.h:50:19: fatal error: ibase.h: No such file or directory
#include <ibase.h> 报错 /usr/bin/ld: cannot find -lgds
[root@Desk001 ibase]# ln -s /usr/lib64/libfbclient.so.2.5.9 /usr/lib64/libgds.so

4.make make install、

[root@Desk001 ibase]# cd /opt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/ibase
[root@Desk001 ibase]# ll
total 64
-rwxrwxr-x. 1 root root 29 Oct 13 2015 ibase.json
-rwxrwxr-x. 1 root root 187 Dec 16 22:50 ibase.pro
drwxr-xr-x. 5 root root 4096 Dec 16 23:33 ibpp
-rwxrwxr-x. 1 root root 2254 Oct 13 2015 main.cpp
-rwxrwxr-x. 1 root root 46701 Dec 16 23:09 Makefile
[root@Desk001 ibase]# make
......
[root@Desk001 ibase]# make install
install -m 755 -p ../../../../plugins/sqldrivers/libqsqlibase.so /opt/Qt5.5.1/5.5/gcc_64/plugins/sqldrivers/libqsqlibase.so
strip --strip-unneeded /opt/Qt5.5.1/5.5/gcc_64/plugins/sqldrivers/libqsqlibase.so
install -m 644 -p /opt/Qt5.5.1/5.5/Src/qtbase/lib/cmake/Qt5Sql/Qt5Sql_QIBaseDriverPlugin.cmake /opt/Qt5.5.1/5.5/gcc_64/lib/cmake/Qt5S
ql/ [root@Desk001 apps]# cd /opt/Qt5.5.1/5.5/gcc_64/plugins/sqldrivers
[root@Desk001 sqldrivers]# ll
total 1076
-rwxr-xr-x. 1 root root 102168 Dec 16 23:57 libqsqlibase.so
-rwxr-xr-x. 1 root root 838064 Oct 13 2015 libqsqlite.so
-rwxr-xr-x. 1 root root 75504 Oct 13 2015 libqsqlmysql.so
-rwxr-xr-x. 1 root root 79248 Oct 13 2015 libqsqlpsql.so

Windos 环境编译 ibase

参考

https://forum.qt.io/topic/26620/how-to-build-plugin-qibase-for-firebird-qt-5-0-2/4
  1. 安装qt5.5、配置qt环境变量,安装FireBird2.5(32位)(软件版本按自己需求选)。
  2. 修改 F:\ProgramFiles\qt5.5\5.5\Src\qtbase\src\plugins\sqldrivers\ibase\ibase.pro

    添加FireBird数据库include
TARGET = qsqlibase

SOURCES = main.cpp
OTHER_FILES += ibase.json INCLUDEPATH += C:/Firebird/Firebird_2_5/include
LIBS += C:/Firebird/Firebird_2_5/lib/fbclient_ms.lib include(../../../sql/drivers/ibase/qsql_ibase.pri) PLUGIN_CLASS_NAME = QIBaseDriverPlugin
include(../qsqldriverbase.pri)
  1. 编译
qmake ibase.pro

mingw32-make(有报头文件 ibase.h 找不到)

修改 F:\ProgramFiles\qt5.5\5.5\Src\qtbase\src\sql\drivers\ibase\qsql_ibase_p.h

添加

 #include <ibase.h>

修改F:\ProgramFiles\qt5.5\5.5\Src\qtbase\src\plugins\sqldrivers\ibase\main.cpp

添加

#include "../../../sql/drivers/ibase/qsql_ibase_p.h"

然后重新编译

mingw32-make

Win环境 使用FireBird

a.本机安装数据库服务情况下直接使用;

b.本机不安装数据库服务情况下,可以访问远程数据库(网络模式);

  • firebird官网下载 32-bit Classic, Superclassic & Superserver,安装。
  • 安装完成后把 bin目录下的fbclient.dll 放到工程编译后生成的exe同级目录

    c.本机不启用数据库服务情况下,可以访问本机数据库文件(嵌入式模式)。
  • firebird官网下载 32-bit Embedded。
  • 解压后把fbembed.dll改成fbclient.dll 放到工程编译后生成的exe同级目录
  • 参考

    Client and server combined: Firebird Embedded Server 嵌入式文档

Qt5.5 connection firebird on Linux Centos7.2 or windows的更多相关文章

  1. Linux CentOS7 安装 Qt 5.9.2

    Linux CentOS7 安装 Qt 5.9.2 参考链接 http://doc.qt.io/qt-5/linux.html sudo yum groupinstall "C Develo ...

  2. Linux Centos7.x 安装部署Mysql5.7几种方式的操作手册

    简述 Linux  Centos7.x 操作系统版本下针对Mysql的安装和使用多少跟之前的Centos6之前版本有所不同的,下面介绍下在centos7.x环境里安装mysql5.7的几种方法: 一. ...

  3. Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器

    前言: 本篇文章主要讲解的是如何在Linux CentOS7操作系统搭建.NET Core运行环境并发布ASP.NET Core应用程序,以及配置Nginx反向代理服务器.因为公司的项目一直都是托管在 ...

  4. gnome/KDE安装,gnome出现问题,重新安装nvdia驱动, Linux(CentOS7) NVIDIA GeForece GTX 745 显卡驱动

    新安装显示gtx745驱动NVIDIA-Linux-x86_64-346.59.run, yum groupremove kde-desktop yum groupinstall "Desk ...

  5. Linux CentOs7 下安装 redis

    Linux CentOs7 下安装 redis 请将以下命令放入linux命令行中运行 如果安装过程前没有安装GCC请先安装  命令如下 $ yum install gcc-c++ $ wget ht ...

  6. Linux centos7环境下安装JDK的步骤详解

    Linux centos7环境下安装JDK的步骤详解 测试root用户下JAVA版本 输入命令:   java –version 1.先到Oracle官网里下载好jdk,网址如下: http://ww ...

  7. Linux centos7环境下安装MySQL的步骤详解

    Linux centos7环境下安装MySQL的步骤详解 安装MySQL mysql 有两个跟windows不同的地方 1).my.ini 保存到/etc/my.ini 2).用户权限,单独用户执行 ...

  8. .NET Core跨平台:.NET Core项目部署到linux(Centos7)

    1.开篇说明 a 上篇博客简单的说明了一下 使用.NET Core开发的一个总结,地址是:(http://www.cnblogs.com/hanyinglong/p/6442148.html),那么这 ...

  9. Linux centos7环境下安装Nginx

    Linux centos7环境下安装Nginx的步骤详解 1.    首先到Nginx官网下载Nginx安装包 http://nginx.org/download/nginx-1.5.9.tar.gz ...

随机推荐

  1. E - Max Sum Plus Plus Plus HDU - 1244 (线性区间DP)

    题目大意:  值得注意的一点是题目要求的是这些子段之间的最大整数和.注意和Max Sum Plus Plus这个题目的区别. 题解: 线性区间DP,对每一段考虑取或者不取.定义状态dp[i][j]指的 ...

  2. O - Navigation System CodeForces - 1321D

    题目大意:有一个导航系统,会根据你当前的位置,规划到目的地的最短路线,给你一个有向图,和一条行驶路径,问你导航重新规划路径的最大次数和最小次数. 读题的时候题意特别不理解,何为最大次数,何为最小次数? ...

  3. 详解 Collection集合

    (请关注 本人"集合总集篇"博文--<详解 集合框架>) 首先,本人来讲解下 Collection集合的继承体系: Collection集合 的继承体系: Collec ...

  4. 2020.4面试分享(7面收5个offer)

    都说金三银四是找工作的最佳时节,由于本人的个人职业规划跟目前工作内容不太相符(具体原因就不透露了,领导平时也要来这里逛,哈哈),四月份挑选了10多家公司投递简历(公司规模从几十人到上万人都有),参加了 ...

  5. testNG 常用的注解

    常用注解介绍: @BeforeSuite 在该套件的所有测试都运行在注释的方法之前,仅运行一次 @AftereSuite 在该套件的所有测试都运行在注释方法之后,仅运行一次 @BeforeClass  ...

  6. 靠!安装了macOS Catalina(10.15.4)后,文件系统都乱套了

    最近闲来无事,决定将我的两台apple电脑升级成最新的苹果系统(macOS Catalina),当然,由于以前升级过多次mac系统,所以毫不犹豫从app store下载了最新的macOS Cetali ...

  7. PHP文件包含漏洞(利用phpinfo)复现

    0x01 简介 PHP文件包含漏洞中,如果找不到可以包含的文件,我们可以通过包含临时文件的方法来getshell.因为临时文件名是随机的,如果目标网站上存在phpinfo,则可以通过phpinfo来获 ...

  8. SpringMVC Spring Mybatis整合篇

    1.创建WEB项目 创建项目:(ssmbuild)步骤略........ 给项目添加lib文件夹,用于存放jar包: 在WEB-INF目录下创建lib文件夹: 创建完成:运行项目时需要把jar导入到l ...

  9. 从"UDF不应有状态" 切入来剖析Flink SQL代码生成

    从"UDF不应有状态" 切入来剖析Flink SQL代码生成 目录 从"UDF不应有状态" 切入来剖析Flink SQL代码生成 0x00 摘要 0x01 概述 ...

  10. JasperReports入门教程(三):Paramters,Fields和Detail基本组件介绍

    JasperReports入门教程(三):Paramter,Field和Detail基本组件介绍 前言 前两篇博客带领大家进行了入门,做出了第一个例子.也解决了中文打印的问题.大家跟着例子也做出了de ...