Официальный форум СВД Встраиваемые Системы
24 Апрель, 2024, 21:30:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: про Qt  (Прочитано 6793 раз)
aslav
Пользователь

Сообщений: 39



« : 25 Январь, 2012, 19:13:12 »

Hi all!

Подкажите, как откомпилировать кьют 4.8 для кросс-компиляции под windows?
Везде мануалы, как откомпилировать под linux.

И не поделится кто-нибудь методом компиляции на хост-системе(windows/linux) библиотеки qwt для последующей кросс-сборки с ней проектов?
« Последнее редактирование: 25 Январь, 2012, 19:18:29 от aslav » Записан
Евгений Горелов
Опытный пользователь

Сообщений: 192



WWW
« Ответ #1 : 26 Январь, 2012, 15:51:42 »

Здравствуйте!

Подкажите, как откомпилировать кьют 4.8 для кросс-компиляции под windows?
Везде мануалы, как откомпилировать под linux.

Сегодня проверил кросс-компиляцию Qt 4.8 под Windows XP, но к сожалению ничего не вышло. Утилита configure.exe не "понимает" такие параметры, как -xplatform unsupported/qws/qnx-i386-g++ и -embedded i386. Скорее всего, дело именно в configure.exe, т.к. скрипт configure, использующийся в Linux/UNIX системах, работает как полагается. Попробуйте использовать в Windows вместо configure.exe скрипт configure, для этого можно использовать интерпретатор, входящий в состав инструментария MinGW. Я использую Fedora Linux в качестве инструментальной системы, поэтому проверить этот способ в данный момент я не могу.


И не поделится кто-нибудь методом компиляции на хост-системе(windows/linux) библиотеки qwt для последующей кросс-сборки с ней проектов?

Библиотеку Qwt надо кросс-компилировать для QNX Neutrino и прописать пути к ней. Компиляция приложений будет аналогична описанному здесь способу.
Записан
aslav
Пользователь

Сообщений: 39



« Ответ #2 : 30 Январь, 2012, 09:49:52 »

Привет!

Попытался собрать Qt в линуксе для кросс-компиляции для QNX.

Calculate Linux Desktop 11.2 x86

Делал так:

Скачал qt-everywhere-opensource-src-4.8.0.tgz с сайта Нокии.
Распаковал в /root/tmp

поправил File:  .../src/3rdparty/webkit/Source/JavaScriptCore/heap/MachineStackMarker.cpp
 
#ifndef SA_RESTART
#error MachineThreads requires SA_RESTART
#endif

Between lines 80-84 remove these lines and save the changed file.

далее запустил
Код:
# ./configure -xplatform unsupported/qws/qnx-i386-g++ -embedded i386 -no-gfx-linuxfb \ 
-no-mouse-linuxtp -no-kbd-tty -no-qt3support -qt-gfx-qnx -qt-mouse-qnx -qt-kbd-qnx \
-no-exceptions

#gmake

#gmake install

Все собралось и установилось нормально.

*************************************************

затем пытаюсь собрать тот же проект из примеров Qt, который собирал под windows для QNX - findfiles

**************************************
Просто проверка компиляции для линукс linux:
Код:
calculate findfiles # qmake -project
calculate findfiles # qmake
calculate findfiles # make
g++ -c -pipe -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o main.o main.cpp
g++ -c -pipe -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o window.o window.cpp
/usr/bin/moc -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. window.h -o moc_window.cpp
g++ -c -pipe -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o moc_window.o moc_window.cpp
g++ -Wl,-O1 -Wl,-rpath,/usr/lib/qt4 -o testtt main.o window.o moc_window.o    -L/usr/lib/qt4 -lQtGui -L/usr/lib/qt4 -L/usr/X11R6/lib -lQtCore -lgthread-2.0 -lrt -lglib-2.0 -lpthread

 бинарник собирается и все работает

************************************
теперь для Qnx:

в файл конфигурации bash /root/.bash_profile добавил  these lines
Код:
export PATH=$PATH:/opt/qnx650/host/linux/x86/usr/bin:/etc/qnx/bin 
export QNX_CONFIGURATION=/etc/qnx
export QNX_HOST=/opt/qnx650/host/linux/x86
export QNX_JAVAHOME=/opt/qnx650/_jvm
export QNX_TARGET=/opt/qnx650/target/qnx6
export QWS_DISPLAY=qnx
export QWS_KEYBOARD=qnx
export QWS_MOUSE_PROTO=qnx
export XDG_CONFIG_HOME=/root
export QMAKESPEC=unsupported/qws/qnx-i386-g++


сделал симлинк на компилятор, т.к. обнаружил что в формируемом makefile имя ntox86-g++-4.2.4 вместо имеющегося ntox86-g++-4.4.2
Код:
calculate #  cd /opt/qnx650/host/linux/x86/usr/bin
calculate bin # ln -s ntox86-g++-4.4.2 ntox86-g++-4.2.4

Собственно сборка:
Код:
calculate findfiles # qmake -project
calculate findfiles # qmake -spec unsupported/qws/qnx-i386-g++
calculate findfiles # make
ntox86-g++-4.2.4 -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/unsupported/qws/qnx-i386-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o main.o main.cpp
ntox86-g++-4.2.4 -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/unsupported/qws/qnx-i386-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o window.o window.cpp
/usr/bin/moc -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/unsupported/qws/qnx-i386-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -D__QNXNTO__ window.h -o moc_window.cpp
ntox86-g++-4.2.4 -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/unsupported/qws/qnx-i386-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o moc_window.o moc_window.cpp
ntox86-g++-4.2.4 -Wl,--no-undefined -Wl,-rpath,/usr/lib/qt4 -o findfiles main.o window.o moc_window.o    -L/usr/lib/qt4 -lQtGui -L/usr/lib/qt4 -L/usr/X11R6/lib -lQtCore -lgthread-2.0 -lrt -lglib-2.0 -lpthread
/opt/qnx650/host/linux/x86/usr/bin/ntox86-ld: cannot find -lgthread-2.0
collect2: ld returned 1 exit status
make: *** [findfiles] Ошибка 1

Не подскажете, как разрешить эту ошибку линковщика и собрать проект? Пока непонятно, в какую сторону смотреть - пути для поиска библиотек теже.

Исходники прилагаю. Там же два скрипта для сборки исходников как для линукса, так и для Qnx

Вот вывод переменных окружения
(щёлкните чтобы показать/скрыть)
« Последнее редактирование: 30 Январь, 2012, 09:58:05 от aslav » Записан
Евгений Горелов
Опытный пользователь

Сообщений: 192



WWW
« Ответ #3 : 30 Январь, 2012, 10:57:00 »

Обратите внимание, что при компиляции в Linux приложение findfiles линкуется с библиотеками gthread-2.0, rt, glib-2.0, pthread.
При сборке для QNX приложение пытается линковаться с теми же бибилотеками и не находит их...
Похоже, что для сборки под QNX используется неправильный Makefile.

Попробуйте компилировать так:

Код:
make distclean
qmake -spec unsupported/qws/qnx-i386-g++
make

Каждый раз генерировать файл .pro не нужно, поэтому можно не использовать команду qmake -project.
« Последнее редактирование: 30 Январь, 2012, 16:29:14 от Евгений Горелов » Записан
aslav
Пользователь

Сообщений: 39



« Ответ #4 : 02 Февраль, 2012, 21:12:18 »

победил.
нужно использовать не системные утилиты qt, а те, что собрались под хост-систему(когда собирал  qt для qnx.)
т.е. просто первым в PATH указать каталог c ними.

собрал qwt 6.0.1 и его примеры. не без напильника.

Некоторые примеры не работают, падают в "корку" прямо на старте.

но тот же Oscilloscope работает нормально, грузит pentiumD 3.4 на 25%

возникло три вопроса:

1) Что с поддержкой русского языка для программ на qt? Отображение и ввод поддерживаются в 6.5.0?

2) При щелчке правой кнопкой мыши по строке заголовка программы, где вызываются ее свойства программа(любая) падает. Очень неприятный эффект

3) возможен ли вывод в qt/qnx c использованием opengl?

Никто не озадачивался такими проблемами? Smiley
Записан
Евгений Горелов
Опытный пользователь

Сообщений: 192



WWW
« Ответ #5 : 02 Февраль, 2012, 22:12:33 »

Qwt 6 я собирал под Qnx без проблем. Не работал только пример, отображающий загрузку системы - он был рассчитан на работу в Linux/Windows.

1) Что с поддержкой русского языка для программ на qt? Отображение и ввод поддерживаются в 6.5.0?
При использовании Utf8 всё работает корректно.

2) При щелчке правой кнопкой мыши по строке заголовка программы, где вызываются ее свойства программа(любая) падает. Очень неприятный эффект
Сейчас нет возможности проверить на 4.8, в 4.7.1 контекстное меню по правой клавише мыши отображается без падения.

3) возможен ли вывод в qt/qnx c использованием opengl?
Нужно дорабатывать плагин экрана. А с какой целью?
Записан
aslav
Пользователь

Сообщений: 39



« Ответ #6 : 03 Февраль, 2012, 13:01:18 »

Цитировать
Цитата: aslav от 02 Февраля, 2012, 23:12:18
1) Что с поддержкой русского языка для программ на qt? Отображение и ввод поддерживаются в 6.5.0?
При использовании Utf8 всё работает корректно.

 А как Вы пишете? просто tr("привет") ? не приведете пример кода?

 p.s. opengl интересен с точки зрения скорости вывода на экран если сложный график

Записан
Евгений Горелов
Опытный пользователь

Сообщений: 192



WWW
« Ответ #7 : 03 Февраль, 2012, 13:39:21 »

А как Вы пишете? просто tr("привет") ? не приведете пример кода? 

Есть два варианта:

- Задать кодек и использовать tr

Код:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));

...

QLabel * label = new QLabel(tr("Привет!"));


- Либо использовать метод QString::fromUtf8()

Код:
QLabel * label = new QLabel(QString::fromUtf8("Привет!"));


p.s. opengl интересен с точки зрения скорости вывода на экран если сложный график

Поддержка OpenGL в первую очередь зависит от того, какой графический драйвер используется в QNX. Если vesabios, то использовать OpenGL  не получится.

Записан
infsega
Интересующийся

Сообщений: 3


« Ответ #8 : 24 Июль, 2012, 22:55:16 »

Появилась инструкция по сборке Qt5:
http://qt-project.org/wiki/Building-Qt5-for-the-Playbook
внимание вопрос - кто-нибудь уже пробовал? Smiley
Записан
Евгений Горелов
Опытный пользователь

Сообщений: 192



WWW
« Ответ #9 : 27 Июль, 2012, 15:24:43 »

Я собирал Qt 5, проблем замечено не было. По вопросам миграции с Qt 4 на Qt 5 можно почитать документ The Road to Qt 5.
Кстати, инструкция по сборке доступна достаточно давно, ориентирововчно с конца апреля этого года.
Записан
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #10 : 29 Июль, 2012, 16:43:40 »

Тоже пробовал Qt5 на PlayBook. Перенёс несколько приложений с Qt4 на Qt5, работают. Wink Пока останусь на Qt4, подожду, когда официально выйдет пятёрка. Благо что и переход с четвёрки на пятёрку довольно простой (не то что с тройки на четвёрку).
Записан
Ольга
Интересующийся

Сообщений: 2


« Ответ #11 : 13 Декабрь, 2012, 14:07:58 »

Здравствуйте!
Возникли проблемы  с интеграцией Qt  в  QNX Momentics под XP.
У меня стоит QNX 6.5 SDP  и QtSdk-offline-win-x86-v1_2_1.
Все сделала в соответствии с  презентацией http://www.kpda.ru/Publications/Presentation021 В результате при построении как вновь созданного в QNX Momentics проекта   так и импортированного из Qt проекта  выдает:

make[1]: *** [debug/main.o] Error 2   SIPTelefon      line 0   C/C++ Problem
make: ***     [debug]           Error 2   SIPTelefon      line 0   C/C++ Problem
 
Error launching external scanner info generator (gcc -E -P -v -dD C:/ide-4.7-workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp -fexceptions -mthreads)   SIPTelefon      Unknown   C/C++ Problem

Не подскажете, где могла закрасться  ошибка.
Записан
Евгений Горелов
Опытный пользователь

Сообщений: 192



WWW
« Ответ #12 : 13 Декабрь, 2012, 15:02:51 »

Ольга, собираются ли другие проекты, не связанные с Qt?

Возможно, проблема связана с установочными путями.
Записан
Ольга
Интересующийся

Сообщений: 2


« Ответ #13 : 17 Декабрь, 2012, 15:49:09 »

Другие проекты собираются
Записан
Евгений Горелов
Опытный пользователь

Сообщений: 192



WWW
« Ответ #14 : 19 Декабрь, 2012, 11:22:40 »

Проверьте путь установки компилятора MinGW, а также, что данный путь добавлен в переменную окружения PATH. По умолчанию MinGW устанавливается в C:\MinGW\bin.
« Последнее редактирование: 19 Декабрь, 2012, 11:43:49 от Евгений Горелов » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 20 Март, 2024, 13:56:42