Russian Qt Forum

Qt => Базы данных => Тема начата: Павелъ от Январь 30, 2018, 09:19



Название: Не собирается драйвер qoci Astra (Debian 7) Oracle client 12
Отправлено: Павелъ от Январь 30, 2018, 09:19
Доброго времени суток. Понадобилось скомпилировать плагин для подключения к БД Oracle из под Qt в Astra Linux.

Установил Oracle client 12.2 согласно этой инструкции http://wiki.ozanh.com/doku.php?id=linux:debian:oracle_client

Согласно этой статье http://doc.qt.io/qt-5/sql-driver.html#qoci пытаюсь скомпилировать исходники.

Вариант выбрал для Oracle 10 (для старших версий нет инструкции)

В oci.pro на форума советуют закомментировать строчку «QMAKE_USE += oci», что я и сделал, иначе qmake ругается на его отсутствие.

На сообщение «Cannot read /opt/Qt5.10.0/5.10.0/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory» советуют внимание не обращать.

Makefile формируется, однако, дальше make отказывается работать.

По совету на этой странице https://habrahabr.ru/post/333468/ выполнил следующее:
«
На этот момент я уже потратил много времени, чтобы хоть как-то собрать плагин, поэтому эту проблему я решил жестко, просто открыл сгенерированный Makefile и изменил -std=c++1z на -std=c++11, а флаг -Wdate_time просто удалил. Эти пары флагов встречаются в двух местах.
»
Но, этот совет для драйвера qodbc.

Тем ни менее make заработал. Но, с руганью на
«
qsql_oci.cpp:52:46: fatal error: QtSql/private/qsqlcachedresult_p.h: Нет такого файла или каталога
 #include <QtSql/private/qsqlcachedresult_p.h>
»

Тогда я make передал ключ «-sql», ошибки не было, но и ничего не сформировалось.
Тогда я поступил другим образом и передал make ключ «-network».

В этот раз от make я получил следующий вывод:
«
make: вход в каталог «/opt/Qt5.10.0/5.10.0/Src/qtbase/src/plugins/sqldrivers/oci»
touch .obj/qsql_oci.o
touch .moc/moc_predefs.h
touch .moc/main.moc
touch .obj/main.o
touch .moc/moc_qsql_oci_p.cpp
touch .obj/moc_qsql_oci_p.o
touch ../plugins/sqldrivers/libqsqloci.so
make: выход из каталога «/opt/Qt5.10.0/5.10.0/Src/qtbase/src/plugins/sqldrivers/oci»
»

Сообщение «touch ../plugins/sqldrivers/libqsqloci.so» дало мне понять, что драйвер скомпилировался, однако, он отсутствует в указанной дирректории

«
pavel@Linux-forever:/opt/Qt5.10.0/5.10.0/Src/qtbase/src/plugins/sqldrivers/oci$ ls -al ../plugins/sqldrivers/
итого 8
drwxr-xr-x 2 root root 4096 янв 29 19:30 .
drwxr-xr-x 3 root root 4096 янв 29 19:30 ..
»

Собирал я драйвер с правами root. Архитектура x86_64.

Как такое может быть: вывод говорит о том, что файл сформирован, однако его там нет?
И как его собрать в итоге?


Название: Re: Не собирается драйвер qoci Astra (Debian 7) Oracle client 12
Отправлено: Павелъ от Февраль 01, 2018, 15:51
Установил Оракл клиент 11.

Библиотека соьралась