Страницы

Поиск по вопросам

суббота, 15 июня 2019 г.

Qt 5.7. Компиляция IBASE плагина в Ubuntu 16.10

Необходимо собрать плагин QIBASE в Ubuntu 16.10 x64 для qt.5x. Мои действия описаны здесь.


Ответ

Сборка была проверена на Ubuntu 16.10 и Debian jessie. Под Debian команды с sudo выполнил в терминале с root Для сборки QT пользовался вики
В /etc/apt/source.list должны быть включены исходники - deb-src
sudo apt-get build-dep qt5-default sudo apt-get install libxcb-xinerama0-dev sudo apt-get install firebird-dev
Склонировал с гита и собрал QT5.7:
cd /usr/src # или любую другую папку по-усмотрению с правами на запись 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 # т.к. developers-build, нет необходимости
Собрал плагин для firebird по этому источнику
export QTDIR=/usr/src/qt5 export PATH=$QTDIR/qtbase/bin:$PATH
cd $QTDIR/qtbase/src/plugins/sqldrivers/ibase
# для обхода ошибки: /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
Следующая ошибка уже известна и ожидает лечения баг
/usr/include/c++/6/cstdlib:75:25: fatal error: stdlib.h: No such file or directory #include_next ^
Поправляем сгенерированный Makefile и повторяем make
INCPATH = -I. -isystem /usr/include --> меняем на INCPATH = -I. -I/usr/include
Вывод:
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 #include
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")

Комментариев нет:

Отправить комментарий