crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Сборка плагина Firebird для Qt под Ubuntu 12.04
academ1c
  опции профиля:
сообщение 8.7.2013, 1:10
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 8.7.2013
Пользователь №: 3877

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




Репутация:   0  


С добрым.
Имею на борту Ubuntu 12.04. Собрался собрать плагин для огнептицы.
Но появились небольшие заморочки. Так как Qt в системе 4.8.1 для нее
исходников на оф.сайте нет, а есть только для версии 4.8.5.
Скачал исходники, поставил сервер огнептицы из тарбола, тоже выкачал на оф. сайте.
Из репов не стал ставить так как нужна версия 2.1.5
Начал собирать проект, вывалил ошибку.
Привожу ошибку.

root@still:/opt/qt-4.8.5/src/plugins/sqldrivers/ibase# make
g++ -c -m64 -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_WEBKIT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtSql -I/usr/include/qt4 -I. -o main.o main.cpp
In file included from main.cpp:44:0:
../../../sql/drivers/ibase/qsql_ibase.h:47:46: фатальная ошибка: QtSql/private/qsqlcachedresult_p.h: Нет такого файла или каталога
компиляция прервана.
make: *** [main.o] Ошибка 1


уже вторые сутки бьюсь побороть не могу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.7.2013, 17:27
Сообщение #2


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

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

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




Репутация:   94  


Цитата(academ1c @ 8.7.2013, 3:10) *
QtSql/private/qsqlcachedresult_p.h: Нет такого файла или каталога компиляция прервана.
ну нет у тебя инклюдов нужных.
раз уж ты скачал исходники Qt, то лучше конечно Qt этой версии и собрать.
Но можно попробовать обойти эту часть.
Есть Перл-сценарий syncqt (где он лежит в Лине я не знаю) в Винде он лежит каталоге %QTDIR%/bin
Для его корректной работы нужно чтобы переменная окружения %QTDIR% указывала на каталог с Qt (Опять про Линь ничего не знаю, так как там всё валяется по разным углам, так что сам ищи).

syncqt просматривает все исходники и на основе них собирает каталог %QTDIR%/include (в винде), к которому идут все зависимости плагинов и собственных программ.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
academ1c
  опции профиля:
сообщение 8.7.2013, 17:33
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 8.7.2013
Пользователь №: 3877

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




Репутация:   0  


Так плагин собрался, даже проинсталился.
Все нормально. Загружен.
Но при тестовом примере вываливает ошибку.

qmake "INCLUDEPATH+=/opt/firebird/include" "INCLUDEPATH+=/opt/qt-4.8.5/include" "LIBS+=-L/opt/firebird/lib/libfbclient.so" ./ibase.pro

 make && make install


Вообще без проблем проходит.
Создаю тестовый пример.

#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QDebug>

int main()
{

    qDebug() << QSqlDatabase::isDriverAvailable("QIBASE");

    QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
    db.setHostName("192.168.65.151");
    db.setDatabaseName("d:\\db_test\\PM3_SHOP7.GDB");
    db.setUserName("sysdba");
    db.setPassword("masterkey");
    db.open();
    qDebug() << db.lastError().text();

    return 1;


}


Если не подключаться к базе данных, то все чики пики.
Стоит только добавить строчку подключения, ребилд и run. И вываливается следующая ошибка в дебаге.
Может кто знает ?

Starting /home/condor/test-build-desktop-Qt_4_8_1___PATH_____________Release/test...
true
/home/condor/test-build-desktop-Qt_4_8_1___PATH_____________Release/test: symbol lookup error: /usr/lib/x86_64-linux-gnu/qt4/plugins/sqldrivers/libqsqlibase.so: undefined symbol: isc_attach_database
/home/condor/test-build-desktop-Qt_4_8_1___PATH_____________Release/test exited with code 127


В общем такая вот ситуёвина, куда дальше копать ?
Система стоит Ubuntu 12.04 - 64bit, Firebird 2.1.5 ставился из тарбола (в убунте 2.5, не совсем подходит), Qt 4.8.1 (родной), плагин компилялся в версии 4.8.5 так как нет возможности достать 4.8.1, уже старая и в архиве нет, только 4.8.5
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.7.2013, 19:42
Сообщение #4


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

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

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




Репутация:   94  


я думаю что проблема в разных инклюдах/бинарях.
Нужную тебе версию смотри тут: http://download.qt-project.org/official_releases/qt/4.8/

.zip или .tar.gz
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
academ1c
  опции профиля:
сообщение 8.7.2013, 19:48
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 8.7.2013
Пользователь №: 3877

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 8.7.2013, 19:42) *
Нужную тебе версию смотри тут: http://download.qt-project.org/official_releases/qt/4.8/

Нет, я запарился, конечно же есть в репах убунты версия 4.8.1 сорцы.
Выкачал -
apt-get source qt4-x11
Перекомпилял заново плагин.
Но ошибка осталась та же. Прискорбно. Даже ума не приложу (.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.7.2013, 19:57
Сообщение #6


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

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

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




Репутация:   94  


Ну я не знаю что тебе посоветовать. Разве что посмотри в инклюдах FB упоминание isc_attach_database и тоже самое в исходниках плагина, может сигнатуры не сходятся.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
academ1c
  опции профиля:
сообщение 8.7.2013, 20:42
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 8.7.2013
Пользователь №: 3877

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




Репутация:   0  


В общем я так понял покопавшись, что оно не слинковано с библиотекой.
Посмотрел параметрыВсе разобрался.
Ошибка была в параметре -L
в строке
qmake "INCLUDEPATH+=/opt/firebird/include" "INCLUDEPATH+=/opt/qt-4.8.5/include" "LIBS+=-L/opt/firebird/lib/libfbclient.so" ./ibase.pro

После этого все чудненько работает ) Спасибо огромное за участие.
Убрал этот параметр и все откомпилялось чудненько и работает. Юрий спасибо за участие.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 28.3.2024, 19:56