Страниц: [1]
  Печать  
Автор Тема: QT4 и QNX 6.3.0  (Прочитано 17296 раз)
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« : Апреля 10, 2007, 12:35:41 pm »

В общем дело такое. Собираю QT 4.2.3 под QNX 6.3.0 SP2, используя компилятор GCC3 из поставки. Можно бы и GCC2, так там граблей многовато будет. В качестве графической среды используются X.Org 6.8.2 + XPhoton 4.3.0.

Несмотря на то, что "тролли" QNX уже официально даже не упоминают, сборка идет очень гладко, почти без нареканий. Но есть енсколько досадных "но".

1. qmake теперь не имеет специальной опции -qnx6, хотя огрызки от адаптаций под qnx в коде qt остались. Поправил код qmake, указав, что -qnx6 это типа то же, что и -unix. Только одно непонятно: а откуда он configure добывает этот параметр?

2. Несмотря на все усилия, make упорно игнорирует PREFIX для инсталляции и путается копировать файлы обратно в диреторию инсталляции.

3. Несмотря на то, что все собралось вроде бы нормально, получаю memory fault. Core dumped. Причину пока не выяснил.

Сейчас внес кое-какие правки, пересобираю заново.

Есть ли у кого уже опыт сборки QT 4 под QNX?

PS: если с QT 4 выгорит, можно на KDE Libs 3.8.0 замахнуться
Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #1 : Апреля 10, 2007, 04:49:25 pm »

Отчего происходит коредамп, вполне понятно. Приложения QT не могут найти модули системы и отваливаются с приветом. В общем, копать надо в области configure.
Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #2 : Апреля 10, 2007, 07:00:00 pm »

Причиной оказалась старая версия утилиты cut (!!!). Оказалось, что входящий в поставку QNX cut не поддерживает опцию -b. Пришлось заменить на -c, хотя это не одно и то же, пусть для строк и имеющее не так много разницы.

Как уже однажды говорили на этом форуме, QNX опять впереди планеты всей
Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #3 : Апреля 10, 2007, 09:24:32 pm »

Собрал

Завтра бинарник в сеть выложу.

Пора браться за KDE 3.8.0
Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #4 : Апреля 11, 2007, 12:01:11 pm »

Выкладываю результаты.

QT 4.2.3 Binary + Development + Demos + Examples

http://umc.ustu.ru/files/uploads/qt-x11-opensource-qnx6.3.0-x86-4.2.3.tar.bz2 (56 мегабайт)

Скриншоты:

http://umc.ustu.ru/files/uploads/shots/snap1.jpg
http://umc.ustu.ru/files/uploads/shots/snap2.jpg
http://umc.ustu.ru/files/uploads/shots/snap3.jpg
http://umc.ustu.ru/files/uploads/shots/snap4.jpg
http://umc.ustu.ru/files/uploads/shots/snap5.jpg
Записан
Ivan
Участник
*
Offline Offline

Сообщений: 23


Просмотр профиля
« Ответ #5 : Апреля 11, 2007, 08:23:17 pm »

Уважаемый Agent.

А Вы XLibs тоже сами собирали?
В той, что была в pubCD для QNX6.3 xf6-lib-4.2-public отсутствует libXfixes.so.3, поэтому насладиться QT4 под QNX неудалось. Или это идет из XPhoton 4.3.0? Кстати, откуда он, ссылочку не дадите? В pubCD для QNX6.3 лежит 4.2

А вообще, изменений много по src qt4 пришлось делать? Нельзя ли, для изучения, результат работы diff по src qt4 выложить? Если это, конечно, не затрагивает Вашей интеллектуальной собственности.
Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #6 : Апреля 12, 2007, 12:57:10 pm »

А Вы XLibs тоже сами собирали?

Я использовал для сборки эту версию:

http://umc.ustu.ru/investigations/system_index/agent_sam_udalu/X.Org-6.8.2-qnx-bin.tar.bz2 XPhoton 4.3.0 в комплекте

Это самосбор. 48 мегабайт. xorgcfg немного глючит, поэтому раскладку клавиатуры придется настраивать вручную, а вместо xterm использовать uxterm. Кроме того, нужно установить следующую переменную окружения: export LANG=C

Можно собрать QT под более ранние версии XLibs. xf6-lib-4.2-public и xfree-4.3.0 тоже подойдут.

Правки выложу в сеть даже без Diff. Там нужно поправить configure, файл unix-processes.cpp (заменить тип size_t на socklen_t), добавить в mkspec директорию qnx-g++ (конфигурация задана на основе Open BSD - я вообще в случае отсутсвия варианта сборки для QNX использую готовую конфигурацию для этой ОС), и еще в одном скрипте исправить параметр -b для cut на -с (или собрать самому новую версию cut).

В приципе, все поправимо и howto более чем простой.

Интеллектуальной собственности это не затрагивает, так как есть условия первоначальной лицензии. И еще, для сборки нужно использовать gcc 3.x.x и выше.
Записан
Ivan
Участник
*
Offline Offline

Сообщений: 23


Просмотр профиля
« Ответ #7 : Апреля 12, 2007, 05:54:04 pm »

Большое спасибо. Более чем понятно. Буду эксперементировать на досуге.

А configure на предмет чего модифицировали?
Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #8 : Апреля 12, 2007, 10:15:47 pm »

А configure на предмет чего модифицировали?

Добавил строчки для QNX
Записан
balabin
Участник
*
Offline Offline

Сообщений: 0


Просмотр профиля
« Ответ #9 : Апреля 19, 2007, 03:01:19 pm »

Я вчера-сегодня тоже пособирал Qt4. Использовал Qt 4.1.1, QNX 6.3.0, стандартный gcc 3.3.1. Я собирал в более скромной конфигурации: без qtgui, qtsvg, qtsql и без графических инструментов типа qt assistant. Уважаемый agent, не могли бы вы выложить патч исходников от стандартной версии QT до вашей, исправленой. Ну и обещаный howto, конечно. Мой алгоритм сборки оказался приблизительно таким:

1) Обходим "особенности" libc и gcc в QNX. В shared-версии libc не хватает вызова popen, а g++ не находит стандартные заголовочные файлы. Это было вылечено выдиранием popen.o из libcS.a и ключами к gcc -isystem, как описано здесь:
http://qnx.org.ru/index.php?option=com_minibb&action=vthread&forum=9&topic=427 4&page=0

2) Правим mkspecs/qnx-g++/{qmake.conf, qplatformdefs.h}. В релизе Qt4.1.1 эти файлы ещё присутствуют, но нуждаются в исправлениях.

3) Правим исходники qmake. Когда-то там был особый ключ -qnx6, но его имхо можно (нужно) удалить. Вроде как, всё что он делает - при линковке добавляет ключ -lcpp, а при компиляции -fhonor-std. -lcpp не нужен, если для линковки используется g++, а -fhonor-std является deprecated, начиная с gcc 3.1.

4) Правим config.tests/unix/makeabs, как раз там вызов cut с неподдерживаемым ключом. Заменяем cut -b1 на cut-c1.

5) Поправить projects.pro чтобы не собирались demos,examples,tools; src/src.pro - убрать gui,sql,svg. Мне-то графика не нужна.

6) Конфигурируем командой ./configure -platform qnx-g++ -little-endian -static. Прочие опции - по желанию.

Вроде как собирается. Простейшие програмки компилируются и запускаются. В моём варианте некоторые проблемы не решены, конечно. TODO list:
1) При конфигурации не срабатывает endian test, поэтому приходится указывать вручную -little-endian. Непорядок.
2) Ошибки при make install. Какие-то проблемы с созданием директорий, приходится перезапускать make install несколько раз, пока он не создаст все нужные директории.
3) Всегда ли нужно передавать g++ ключ -fexceptions? как это согласуется с политикой Qt по этому поводу?
4) Сборка динамической (shared) библиотеки. Даже не занимался.
5) Нужен ли в qmake отдельный ключ -qnx6 или его можно выбросить? Как это сделать правильно?
6) QtGui...

Насчёт игнорирования переменной PREFIX для инсталляции - не знаю, я умолчания не менял.

Файла unix-processes.cpp у меня в дереве Qt нет вообще, возможно, дело в том, что у меня более ранняя версия Qt. Но вообще, в mkspecs/qnx-g++/qplatformdefs.h есть макрос QT_SOCKLEN_T, который и должен определять тип socklen_t. Файл unix-processes.cpp использует этот макрос или size_t там жёстко вкодирован?
Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #10 : Апреля 19, 2007, 08:41:34 pm »

Патч приложу, хотя там, поверьте, ничего особенного (хотя вдруг?).

1) Обходим "особенности" libc и gcc в QNXОбходим "особенности" libc и gcc в QNX Мне почему-то не понадобилось этого делать. То есть все собралось и так.

2) Правим mkspecs/qnx-g++/{qmake.conf, qplatformdefs.h}. В релизе Qt4.1.1 эти файлы ещё присутствуют, но нуждаются в исправлениях. Они даже были?! Я в основном брал от данные от OpenBSD.

3) Правим исходники qmake. Когда-то там был особый ключ -qnx6 Я просто ассоциировал данный ключ с -unix.

4) При конфигурации не срабатывает endian test Надо попробовать

5) Ошибки при make install. Какие-то проблемы с созданием директорий, приходится перезапускать make install несколько раз, пока он не создаст все нужные директории. Ага, было такое (и раньше с QT 3.3.Cool. Ошибки там глупые, так что можно просто сделать make install -i - все устанавливается.

6) Сборка динамической (shared) библиотеки. Даже не занимался. У меня shared

7) unix-processes.cpp должен быть, это древняя штука, еще со времен qt3. size_t в нем прошит жестко в одном месте. Нужно править.

Мне вот Gui был нужен. Сейчас точу зуб на KDE.
Записан
juriy
Участник
*
Offline Offline

Сообщений: 1


Просмотр профиля
« Ответ #11 : Декабря 13, 2014, 03:55:07 pm »

Здравствуйте, мне интересно программировать под QNX на qt, есть ли более новые версии qt (4.Cool для QNX? Где можно данные версии qt скачать? Пробую перейти по ссылкам на скачку -- ничего не получается, пишет, что такого URL не существует
Записан
Basil-64
Sr. Member
****
Offline Offline

Сообщений: 282



Просмотр профиля
« Ответ #12 : Декабря 15, 2014, 06:28:03 pm »

qt 4.8.6 для  qnx6.5
http://forum.kpda.ru/index.php/topic,1118.msg10073/topicseen.html#msg10073
Требуетcя регистрация на форуме kpda
Записан

В жизни всегда есть место подвигу - главное быть подальше от этого места. Но никак не получается.
Страниц: [1]
  Печать  
 
Перейти в: