Доброго времени суток. Понадобилось скомпилировать плагин для подключения к БД 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.
Как такое может быть: вывод говорит о том, что файл сформирован, однако его там нет?
И как его собрать в итоге?