【问题标题】:Qt 5.x. compiling IBASE plagin Ubuntu 16.10Qt 5.x。编译 IBASE plagin Ubuntu 16.10
【发布时间】:2017-05-16 06:03:25
【问题描述】:

我有一个问题,你需要在ubuntu中组装qt5中的ibase插件。在我进行了一系列操作后,我假设您需要挂载文件夹 include/firebird 但找不到她。

sudo ln -s /usr/lib/i386-linux-gnu/libfbclient.so.2.5.6 /usr/lib/libfbclient.so
sudo ln -s /usr/lib/i386-linux-gnu/libfbclient.so.2.5.6 /usr/lib/libgds.so
sudo ln -s /usr/lib/libfbclient.so /usr/lib/libgds.so.0
sudo ln /usr/lib/libfbclient.so /usr/lib/lgds.so
sudo ln /usr/lib/libfbclient.so /usr/lib/libgds.so

已安装:

dpkg --get-selections | grep firebird
firebird-dev                    install
firebird2.5-classic             deinstall
firebird2.5-common              install
firebird2.5-common-doc              install
firebird2.5-server-common           install
firebird2.5-super               install
libreoffice-sdbc-firebird           install

gbak -z
gbak:gbak version LI-V2.5.6.27020 Firebird 2.5

dpkg -L firebird2.5-super
/.
/etc
/etc/init.d
/etc/init.d/firebird2.5-super
/usr
/usr/bin
/usr/bin/fbstat
/usr/bin/fbsvcmgr
/usr/bin/fbtracemgr
/usr/bin/gbak
/usr/bin/gdef
/usr/bin/gfix
/usr/bin/gpre
/usr/bin/gsec
/usr/bin/isql-fb
/usr/bin/nbackup
/usr/bin/qli
/usr/lib
/usr/lib/firebird
/usr/lib/firebird/2.5
/usr/lib/firebird/2.5/UDF
/usr/lib/firebird/2.5/UDF/fbudf.so
/usr/lib/firebird/2.5/UDF/ib_udf.so
/usr/sbin
/usr/sbin/fb_lock_print
/usr/sbin/fbserver
/usr/share
/usr/share/doc
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/firebird2.5-super
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/fbserver.1.gz
/usr/share/doc/firebird2.5-super

建筑:

sudo cp /usr/lib/x86_64-linux-gnu/firebird/2.5/firebird.msg /opt/firebird/firebird.msg

sudo nano /etc/profile
export FIREBIRD="/opt/firebird"

qmake "INCLUDEPATH+=/usr/bin/" "INCLUDEPATH+=/usr/lib/x86_64-linux-gnu/" "LIBS+=-L/usr/lib/x86_64-linux-gnu/libfbclient.so" "LIBS+=-L/usr/lib/lgds.so" "LIBS+=-L/usr/lib/x86_64-linux-gnu/libdl.so" "LIBS+=-L/usr/lib/libgds.so" "INCLUDEPATH+=/usr/lib/x86_64-linux-gnu/firebird/2.5/" "INCLUDEPATH+=/usr/include" "LIBS+=-L/usr/lib64 -lfbclient" ibase.pro


make

log for Qt 5.2.1 - 5.3

log for Qt 5.4-5.5

log for Qt 5.6

log for Qt 5.7

【问题讨论】:

  • 看起来你缺少 ibase.h
  • @MarkRotteveel 定位 ibase.h /usr/include/ibase.h /usr/include/qt4/Qt/qsql_ibase.h /usr/include/qt4/QtSql/qsql_ibase.h

标签: qt ubuntu firebird


【解决方案1】:

在 Ubuntu 16.10 和 Debian jessie 上成功编译。

序言:

  • 在 Debian 上使用 su - 而不是 sudo

  • 用于构建使用的 QT 源 wiki

  • /etc/apt/source.list - 你必须把一些源URI的deb-src ...放在这里

安装包:

sudo apt-get build-dep qt5-default
sudo apt-get install libxcb-xinerama0-dev
sudo apt-get install firebird-dev

源码树是从 git 仓库克隆的:

cd /usr/src # or any directory you want with w+x 
git clone git://code.qt.io/qt/qt5.git

cd qt5;
git checkout 5.7

perl init-repository

./configure -developer-build -opensource -nomake examples -nomake tests

配置在上述步骤中没有发现构建 InterBase 插件:

  SQL drivers:
    DB2 .................. no
    InterBase ............ no
    MySQL ................ yes (plugin)
    OCI .................. no
    ODBC ................. yes (plugin)
    PostgreSQL ........... yes (plugin)
    SQLite 2 ............. no
    SQLite ............... yes (plugin, using bundled copy)
    TDS .................. yes (plugin)

make -j4

# make install # it isn't needed because developers-build 

用于构建firebird 插件使用this doc

export QTDIR=/usr/src/qt5
export PATH=$QTDIR/qtbase/bin:$PATH

cd $QTDIR/qtbase/src/plugins/sqldrivers/ibase

# to avoid linker error: /usr/bin/ld.gold: error: cannot find -lgds
sudo ln -s /usr/lib/x86_64-linux-gnu/libfbclient.so /usr/lib/libgds.so

qmake "INCLUDEPATH+=/usr/include" "LIBS+=-L/usr/lib/x86_64-linux-gnu -lfbclient" ibase.pro
make

我只在 Ubuntu 上遇到过以下错误 bug-report

/usr/include/c++/6/cstdlib:75:25:致命错误:stdlib.h:没有这样的文件 或目录 #include_next ^

生成的 Makefile 应按以下方式修改:

INCPATH       = -I. -isystem /usr/include
--> new
INCPATH       = -I. -I/usr/include

之后,重新执行make

rm -f libqsqlibase.so
g++ -Wl,--no-undefined -fuse-ld=gold -Wl,--enable-new-dtags -Wl,-rpath,/usr/src/qt5/qtbase/lib -shared -o libqsqlibase.so .obj/main.o .obj/qsql_ibase.o .obj/moc_qsql_ibase_p.o  -L/usr/lib/x86_64-linux-gnu -lfbclient -lgds -L/usr/src/qt5/qtbase/lib -lQt5Sql -lQt5Core -lpthread
mv -f libqsqlibase.so ../../../../plugins/sqldrivers/

-rwxr-xr-x 1 db src 1241008 May  1 23:55 ../../../../plugins/sqldrivers/libqsqlibase.so

就是这样。最简单的测试程序显示 ibase 插件现已可用:

#include <QCoreApplication>
#include <QtSql>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << "drivers available:" << QSqlDatabase::drivers();
    QCoreApplication::exit(0);
}

可用的驱动程序:(“QIBASE”、“QSQLITE”、“QMYSQL”、“QMYSQL3”、“QODBC”、“QODBC3”、“QPSQL”、“QPSQL7”、“QTDS”、“QTDS7”)

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 2023-03-13
    • 2013-10-07
    • 1970-01-01
    相关资源
    最近更新 更多