crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Тема закрытаНачать новую тему
> [РЕШЕНО] Драйвер Oracle-OCI для Qt (Linux Kubuntu 9.10), Как скомпилировать драйвер oracle для Qt
Oleg S. Plesser
  опции профиля:
сообщение 26.11.2009, 11:08
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 12.12.2007
Из: Московская область
Пользователь №: 41

Спасибо сказали: 4 раз(а)




Репутация:   0  


скачал
qt-x11-opensource-src-4.5.3.tar.gz

дальше по инструкции из qt-assistant
cd $QTDIR/src/plugins/sqldrivers/oci
qmake "INCLUDEPATH+=/usr/include/oracle/10.1.0.3/client" "LIBS+=-L/usr/lib/oracle/10.1.0.3/client/lib -Wl,-rpath,/usr/lib/oracle/10.1.0.3/client/lib -lclntsh -lnnz10" oci.pro
make

в моем случае
cat $ORACLE_HOME
cat: /usr/lib/oracle/xe/app/oracle/product/10.2.0/server: Is a directory

cd /home/swift/Tmp/qt-x11-opensource-src-4.5.3/src/sql/drivers/oci
qmake -project (у меня нет oci.pro)
qmake "INCLUDEPATH+=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server" "LIBS+=-L/usr/lib/oracle/xe/app/oracle/product/10.2.0/server -Wl,-rpath,/usr/lib/oracle/10.1.0.3/client/lib -lclntsh -lnnz10" oci.pro (у меня стоит oracle XE)

------
прописал в make
include исходников
-I/home/swift/Tmp/qt-x11-opensource-src-4.5.3/include
------
make
и получаю
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/home/swift/Tmp/qt-x11-opensource-src-4.5.3/include/QtSql -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/lib/oracle/xe/app/oracle/product/10.2.0/server -I. -I. -o qsql_oci.o qsql_oci.cpp In file included from qsql_oci.cpp:42:
qsql_oci.h:47:46: error: QtSql/private/qsqlcachedresult_p.h: No such file or directory
qsql_oci.cpp:59:17: error: oci.h: No such file or directory
In file included from qsql_oci.cpp:42:
qsql_oci.h:68: error: expected class-name before ‘{’ token
qsql_oci.h:80: error: ‘ValueCache’ has not been declared
qsql_oci.cpp:80: error: ‘OCIStmt’ was not declared in this scope
qsql_oci.cpp:80: error: template argument 1 is invalid
qsql_oci.cpp:90: error: ‘ub1’ does not name a type
qsql_oci.cpp:91: error: ‘ub2’ does not name a type
qsql_oci.cpp:93: error: ‘sb2’ was not declared in this scope
qsql_oci.cpp:93: error: template argument 1 is invalid
******************




конечно можно начать шаманить и править ссылки на header файлы
но что то мне подсказывает что можно как то более просто решить сей проблему....

вопрос
как?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 26.11.2009, 12:03
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Oleg S. Plesser @ 26.11.2009, 11:08) *
cd /home/swift/Tmp/qt-x11-opensource-src-4.5.3/src/sql/drivers/oci
qmake -project (у меня нет oci.pro)


oci.pro там и не должно быть, он должен лежать (по аналогии с версией под win32) в папке cd /home/swift/Tmp/qt-x11-opensource-src-4.5.3/src/plugins/sqldrivers/oci
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Oleg S. Plesser
  опции профиля:
сообщение 26.11.2009, 12:50
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 12.12.2007
Из: Московская область
Пользователь №: 41

Спасибо сказали: 4 раз(а)




Репутация:   0  


Цитата(iddqd @ 26.11.2009, 12:03) *
Цитата(Oleg S. Plesser @ 26.11.2009, 11:08) *
cd /home/swift/Tmp/qt-x11-opensource-src-4.5.3/src/sql/drivers/oci
qmake -project (у меня нет oci.pro)


oci.pro там и не должно быть, он должен лежать (по аналогии с версией под win32) в папке cd /home/swift/Tmp/qt-x11-opensource-src-4.5.3/src/plugins/sqldrivers/oci



эээ
кхм
ок
поехали по этому пути
создаю makefile
прописываю в нем -I/home/swift/Tmp/qt-x11-opensource-src-4.5.3/include
make
g++ -c -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_SHARED -I/home/swift/Tmp/qt-x11-opensource-src-4.5.3/include -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtSql -I/usr/include/qt4 -I/usr/lib/oracle/xe/app/oracle/product/10.2.0/server -I. -o main.o main.cpp
g++ -c -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_SHARED -I/home/swift/Tmp/qt-x11-opensource-src-4.5.3/include -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtSql -I/usr/include/qt4 -I/usr/lib/oracle/xe/app/oracle/product/10.2.0/server -I. -o qsql_oci.o ../../../sql/drivers/oci/qsql_oci.cpp
../../../sql/drivers/oci/qsql_oci.cpp:59:17: error: oci.h: No such file or directory
../../../sql/drivers/oci/qsql_oci.cpp:80: error: ‘OCIStmt’ was not declared in this scope
../../../sql/drivers/oci/qsql_oci.cpp:80: error: template argument 1 is invalid
../../../sql/drivers/oci/qsql_oci.cpp:90: error: ‘ub1’ does not name a type
../../../sql/drivers/oci/qsql_oci.cpp:91: error: ‘ub2’ does not name a type
../../../sql/drivers/oci/qsql_oci.cpp:93: error: ‘sb2’ was not declared in this scope
../../../sql/drivers/oci/qsql_oci.cpp:93: error: template argument 1 is invalid
************************************************************
и

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Oleg S. Plesser
  опции профиля:
сообщение 26.11.2009, 14:01
Сообщение #4


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 12.12.2007
Из: Московская область
Пользователь №: 41

Спасибо сказали: 4 раз(а)




Репутация:   0  


так
собрал
файл libqsqloci.so
кинул в
/usr/lib/qt4/plugins/sqldrivers
а что делать дальше?

QSqlDatabase: QOCI driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL3 QMYSQL QODBC3 QODBC
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 26.11.2009, 14:17
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

Спасибо сказали: 1 раз(а)




Репутация:   0  


у самого похожая проблема...

отпишись, если найдёшь в чем дело.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.11.2009, 14:23
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Oleg S. Plesser @ 26.11.2009, 17:01) *
файл libqsqloci.so
кинул в
/usr/lib/qt4/plugins/sqldrivers
а что делать дальше?
по идее руками ничего копировать не надо, на Никсах видимо нужно ещё сделать make install (на видах больше никаких тело движений не нужно)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Oleg S. Plesser
  опции профиля:
сообщение 26.11.2009, 14:26
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 12.12.2007
Из: Московская область
Пользователь №: 41

Спасибо сказали: 4 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 26.11.2009, 14:23) *
Цитата(Oleg S. Plesser @ 26.11.2009, 17:01) *
файл libqsqloci.so
кинул в
/usr/lib/qt4/plugins/sqldrivers
а что делать дальше?
по идее руками ничего копировать не надо, на Никсах видимо нужно ещё сделать make install (на видах больше никаких тело движений не нужно)


те же яйца вид сбоку :-/
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Oleg S. Plesser
  опции профиля:
сообщение 26.11.2009, 15:27
Сообщение #8


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 12.12.2007
Из: Московская область
Пользователь №: 41

Спасибо сказали: 4 раз(а)




Репутация:   0  


Цитата(Oleg S. Plesser @ 26.11.2009, 14:26) *
Цитата(Litkevich Yuriy @ 26.11.2009, 14:23) *
Цитата(Oleg S. Plesser @ 26.11.2009, 17:01) *
файл libqsqloci.so
кинул в
/usr/lib/qt4/plugins/sqldrivers
а что делать дальше?
по идее руками ничего копировать не надо, на Никсах видимо нужно ещё сделать make install (на видах больше никаких тело движений не нужно)


те же яйца вид сбоку :-/



сделано
надо было ldconfig запустить после инсталяции
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.11.2009, 16:24
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Oleg S. Plesser, можешь теперь по шагам описать, в стиле " делаем раз, делаем два,..."?
Чтобы тему закрыть
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Oleg S. Plesser
  опции профиля:
сообщение 26.11.2009, 18:10
Сообщение #10


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 12.12.2007
Из: Московская область
Пользователь №: 41

Спасибо сказали: 4 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 26.11.2009, 16:24) *
Oleg S. Plesser, можешь теперь по шагам описать, в стиле " делаем раз, делаем два,..."?
Чтобы тему закрыть


обязательно распишу
у меня в планах сие значится :)
завтра сделаю!!!

Дано:
Kubuntu 9.10 (версия kubuntu в данном случае не принципиально)
с установленным комплектом разработчика по Qt и Oracle Express Edition из репозитариев.
Задача:
установить соединение из Qt программы с базой данных.

Решение
По какой то причине в репозитарии нету скомпилированного драйвера под Oracle, но исходники самого sql драйвера
доступны в исходниках Qt.

Для начала нам необходимо скачать Instant Client Oracle
http://www.oracle.com/technology/software/.../linuxsoft.html
Обратите внимание что если у вас стоит Oracle Express Edition
то вам необходимы файлы из ветки 10.2
Скачиваете архив
разархивруете его
и идете по следующему пути(адресу)
/home/swift/Tmp/instantclient_10_2/sdk

Вас интересует содержимое директории include
с правами root создаете директорию /usr/include/oracle/10.2
и копируете в нее содержимое сей папки



Далее идем на сайт http://qt.nokia.com/downloads/linux-x11-cpp
И качаем оттуда исходники Qt.
(В репозитарии Kubuntu доступна версия Qt 4.5.2, на сайте по умолчанию предлагается скачать 4.5.3, что впринципе не принципиально,
если Вы хотите скачать исходники именно Qt 4.5.2 просто в ссылке меняете одну циферку и тем же wget спокойно ее качаете)

В моем случае я скачал ее по адресу
/home/swift/Tmp

разархивруем архив
и идем по следующему пути(адресу)
/home/swift/Tmp/qt-x11-opensource-src-4.5.2/src/plugins/sqldrivers/oci

Там должно быть три файла
README
main.cpp
oci.pro

Там выполняем следующующую команду
qmake "INCLUDEPATH+=/usr/include/oracle/10.2/" "LIBS+=-L//usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/ -Wl,-rpath,/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/ -lclntsh -lnnz10" oci.pro

Обратите внимание на пути, они должны соотвествовать пути где у вас установлен Oracle XE
Выполняем команду и получаем файл Makefile
Заходим в него и находим строчку которая начинается с INCPATH
Наша задача указать что лежат заголовочные файлы входящие в исходники.
В моем случае это вылилось в добавление туда следующей строки
-I/home/swift/Tmp/qt-x11-opensource-src-4.5.2/include

Сохраняем файл
и запускаем
сначало make
затем make install (эту команду необходимо запускать с правами root)

Затем необходимо переписать hash динамических библиотек. Это делается с помощью команды ldconfig.


Ну и теперь тестируем саму программу

#include <QtGui>
#include <QtSql>

int main(int argc, char **argv)
{
QApplication a(argc,argv);
QMainWindow mainwin;
....
QSqlDatabase db;
db.addDatabase("QOCI");
db.setDatabaseName("XE");
db.setUserName("system");
db.setPassword("secret_word");
..............
mainwin.show();
return a.exec();
}

программа компилится стандартно
qmake -project
qmake
make
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Тема закрытаНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 7.4.2020, 23:45