Qt5.x。编译 IBASE plagin Ubuntu 16.10
Qt 5.x. compiling IBASE plagin Ubuntu 16.10
我有一个问题,你需要assemble 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
在 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: fatal error: stdlib.h: No such file
or directory
#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);
}
drivers available: ("QIBASE", "QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7", "QTDS", "QTDS7")
希望对您有所帮助。
我有一个问题,你需要assemble 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
在 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: fatal error: stdlib.h: No such file or directory #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);
}
drivers available: ("QIBASE", "QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7", "QTDS", "QTDS7")
希望对您有所帮助。