Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программа на разных ОС!
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
posi4
Написал я простенькое приложение с графическим интерфейсом и решил проверить его на разных
системах. Естественно возникли вопросы.

Приложение состоит из 15 кнопок, около 40 doublespinbox'ов, 10 radiobuttun'ов, 2 графика qwt_plot в каждом по четыре кривые,
графики обновляются в реальном времени, примерно 5 раз в секунду приходят 8 массивов по 1000 точек. Ну вообщем по ресурсам
пустяк.
Писал я это на конфигурации Celeron 2.80GHz, 512 Мб, WinXP SP2, Qt 4.5.2, QtCreator 1.2. Запустил. Работает нормально,
тормозов нет, но чувствуется что компьютеру сил еле еле хватает.
Запустился под Celeron 2.80GHz, 512 Мб, КУбунту 9.04. правда там уже стоит Qt 4.5.3 , но я думаю версия Qt роли здесь не играет, QtCreator 1.3. Откомпилировал.
Запустил. Ну, во-первых, графика съехала, всё вроде присутствует, но всё криво стало; во-вторых, появились тормоза,
примерно такие, нажимаешь на кнопку, а нажимается она с задержкой секунды 1.5 - 2, так же со всеми остальными виджетами;
при отрисовке графиков пропускаются кадры, поэтому всё выглядит как новогодняя мигающая гирлянда.
Скомпилировал всё статически, поставил запустил программу на другом компе, Core2 Duo 1.80 Гц, 1Гб.
Сначало на WinXP SP2, работает всё бастрее раза в 3-4, никаких внешних изменений, ну это и понятно.
Потом загрузился под установленным там Линуксом, Linux Mint 7 (ядро Ubuntu 9.04), работает тоже быстро,
но проблема с пропуском кадров осталась и добавилась еще одна. одна из функций qwt перестала перерисовывать область где выводятся графики если их
маштабировать.
Еще я попробывал запустить это всё на Red Hat v.4 / AS, тот мне сказал что нужна ему GLIBC 2.4 , хотя при сборке статической Qt я прописывал что бы
glib была туда включена. Да и вообще как я понимаю это стандартная библиотека для unix-подобных систем и уже должна быть на компе.
И напоследок вишенка на торт, попытался запустить под Solaris 5(!!!), ну тут всё просто "cannot execute" - вот и весь ответ.

Вопрос то вот в чём, есть ли какие универсальные способы написания программ или приемы(трюки), чтоб потом не мучаться с переносом приложений?
Что кто думает вообще на эту тему? И как мне все это заставить работать на Solaris 5?
Прошу строго не судить, я медленно постигаю эту науку! =)
Гость
включить глибц это мощно... а ключик какой для этого использовался?
непонятно - под разные юникс ОС пробовалась одна сборка или каждый раз пересобиралось?
виджеты разъехались? там лайауты есть надеюсь?
Litkevich Yuriy
Моё сравнение:
Виджетов с десяток, Qwt5.2 (сделан осчилограф) данные с трёх компортов (цифруются 3 фазы 50 Гц, частота дискретизации 200 Гц)
Работает на Селерон 950 Мгц Вин2к
Если другие приложения не запускать то осцилаграмма рисуется и пишется в файл без прерываний

Цитата(posi4 @ 17.11.2009, 20:01) *
Писал я это на конфигурации Celeron 2.80GHz, 512 Мб, WinXP SP2, Qt 4.5.2, QtCreator 1.2. Запустил. Работает нормально,
тормозов нет, но чувствуется что компьютеру сил еле еле хватает.
чё-то намудрено в программе
posi4
Цитата(Гость @ 17.11.2009, 17:50) *
включить глибц это мощно... а ключик какой для этого использовался?
непонятно - под разные юникс ОС пробовалась одна сборка или каждый раз пересобиралось?
виджеты разъехались? там лайауты есть надеюсь?


не знаю правильно ли я делал но писал так:
./confiure -static -release -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg -no-gtkstyle -sm -glib -nomake demos -nomake examples -nomake tools -prefix /home/qtsdk-2009.04/qt_static


использовалась одна сборка!

С лайаутами все нормально, они есть. Но вот label'ы все почему то стали меньше по размерам, размеры кнопок изменились.
Да, и некоторые лайауты нехотят менять свои размеры! но это я думаю баг QtCreatra или QtDisaignera.
SABROG
Цитата(posi4 @ 17.11.2009, 18:08) *
использовалась одна сборка!


Имхо, чтобы правильно всё проверить надо:
- на каждой ОС пересобирать Qt из исходников заново
- свою программу собирать на каждой ос заново
- все зависимые/сторонние библиотеки, которые используются в программе под каждой ОС собирать заново

- использовать один и тот же стиль, Plastique например
- убедиться, что используются одни и те же общие шрифты
- убедиться, что на всех ОС стоят нормальные драйвера для видео-карты и другие приложения не тормозят также как и твое
- проверить профайлером
Litkevich Yuriy
Цитата(SABROG @ 17.11.2009, 21:19) *
- на каждой ОС пересобирать Qt из исходников заново
а зачем?
SABROG
Цитата(Litkevich Yuriy @ 17.11.2009, 18:24) *
Цитата(SABROG @ 17.11.2009, 21:19) *
- на каждой ОС пересобирать Qt из исходников заново
а зачем?


Потому, что в исходниках вполне могут быть дефайны, которые учитывают особенности конкретной версии операционной системы, а также конкретной версии компилятора.
Litkevich Yuriy
а у него сборка статическая, все зависимости Qt должны быть включены в бинарь
SABROG
Цитата(Litkevich Yuriy @ 17.11.2009, 18:44) *
а у него сборка статическая, все зависимости Qt должны быть включены в бинарь


Да, но код в этих зависимостях был сгенерен для другой ОС, поэтому не факт, что программа будет работать стабильно или быстро.
Litkevich Yuriy
где-то у трлей было описание как это делать, чтоб на разных линухах работало. А вот где, не помню.
kuzulis
2 SABROG,
+1

ИМХО, собирать под разные ОС - самый лучший вариант, т.к. если делать одну сборку на всех - то много "геммороя".
К тому же насчет Glibc - как вы представляете статически ее скомпилить?
Она же в дистрибудивах - SHARED LIB, поэтому ИМХО, нужно в этом случае брать и вкомпиливать в прогу исходники этой самой Glibc и т.п. и т.д

А если уж делать одну сборку приложения динамически - то нужно как-то указать компилятору и т.п., чтобы использовалась архитектура i386 и стандарные всякие функции Glibc и чо-то там еще... - для того, чтобы
приложение могло работать на других машинах..

Плюс к тому - топикстартеру хорошо бы проверить - как у него настроена видяха, т.к. может быть не установлены проприетарные дровишки - от этого такие тормоза.. Или вообще режим vesa стоит :)
posi4
Цитата
- на каждой ОС пересобирать Qt из исходников заново
- свою программу собирать на каждой ос заново
- все зависимые/сторонние библиотеки, которые используются в программе под каждой ОС собирать заново

наверное ты прав, но тогда вся идея кросплатформенности идет лесом! имхо

Цитата
- убедиться, что на всех ОС стоят нормальные драйвера для видео-карты и другие приложения не тормозят также как и твое

Цитата
хорошо бы проверить - как настроена видяха, т.к. может быть не установлены проприетарные дровишки - от этого такие тормоза.. Или вообще режим vesa стоит

спасибо, этим займусь, потому что как то не задумывался об этом раньше. обычно на виндах раз все установишь и забываешь.

Еще вопрос, как запустить приложение написанное под Qt 4.5.3 на более старых версиях ОС? думаю что лет 15 назад когда
был всё тот же Solaris 5(будь он проклят=) Qt только начинала свой путь, и сейчас уже все поменялось! это значит не получить
мне уже на этой системе тех вкусностей которые я запихнул в свое приложение! или можно все таки перевести код, ну может на более старую версию Qt?
с этим сталкивался кто нибудь?
Litkevich Yuriy
Цитата(posi4 @ 18.11.2009, 14:12) *
но тогда вся идея кросплатформенности идет лесом!
вообще-то троли упоминают только переносимость на уровне исходников.
Гость
под солярис по-любому надо собирать отдельную версию. Он конечно юникс, но у него совсем другой формат библиотек\исполняемых файлов, нежели в линуксе, программа из линупса и не должна работать
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.