Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: a_n_y_a от Ноябрь 13, 2008, 13:41



Название: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: a_n_y_a от Ноябрь 13, 2008, 13:41
   Написал программку, собрал, все работает. Что мне надо для того чтобы эта программка работала на другом компе. Где то читал, что должна быть установлена Qt. Но у меня на ее сборку ушло 5 часов. Может как в виндах нужно несколько файликов от Qt? Работаю в линуксе.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: lit-uriy от Ноябрь 13, 2008, 14:04
для линуха надо найти пакет Qt от разработчика этого дистрибутива ОСьки. И его ставить.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Ноябрь 13, 2008, 15:11
это если себе на один комп ставишь.  А как быть если программу на сайте выкладываешь?
Как делать программу и инсталлятор к ней который на всех линуксах будет работать?


Название: Re: Что надо для переноса исполняемой програ&
Отправлено: lit-uriy от Ноябрь 13, 2008, 15:25
2 Detonator, а ты много таких программ знаешь под Линух-то, которые инсталятором ставятся?


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: juvf от Ноябрь 13, 2008, 15:29
   Написал программку, собрал, все работает. Что мне надо для того чтобы эта программка работала на другом компе. Где то читал, что должна быть установлена Qt. Но у меня на ее сборку ушло 5 часов. Может как в виндах нужно несколько файликов от Qt? Работаю в линуксе.

Если речь идет о др. эвм с тойже операционкой, то не нужно на 2-ой эвм ставить qt. На том компе, где компиляешь программу, например под Win XP, собери Qt c опцией -static. После этого компиляй свою программу. Исполняемый файл получится тяжелее, но зато будет работать на всех эвм с Win XP не зависимо от того, установлена там Qt или нет. Пробывал в винде. В линуксах не пробывал. Но думаю это таже тема.


Название: Re: Что надо для переноса исполняемой програ&
Отправлено: Detonator от Ноябрь 13, 2008, 15:34
2 Detonator, а ты много таких программ знаешь под Линух-то, которые инсталятором ставятся?

Я с линуксом не знаком, но если там все программы ставятся путем ручной компиляцией и настройкой необходимых библиотек то нафиг такое счастье не нужно.
Я встречал на сайтах некоторые программы: дается три ссылки для скачки версий под: Windows, Linux, MacOSX. Значит как то они это делают.

кстати а qtCreator под линукс как ставится?


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: BRE от Ноябрь 13, 2008, 15:45
А давайте взглянем на это с другой стороны.
Если на одной машине будет установлено 30 программ использующих Qt, каждая из которых будет содержать внутри себя не малую часть библиотеки....
От чего уходили придумывая динамические библиотеки, к тому приходим.
Нужно понимать, что если программа будет интересна кому нибудь, кроме разработчика, то ее будут собирать и выкладывать для разных дистрибутивов линукса, сами авторы этих дистрибутивов.
Это для линукса, для винды - ну положите рядом нужные dll. Там все так делают.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: lit-uriy от Ноябрь 13, 2008, 15:55
2 Detonator, программы на GNU/Linux распространяются в виде APT или RPM пакетов, как в бинарной форме так и в исходниках, для системных библиотек и приравненым к ним, разработчик ОСьки создает эти бинарные пакеты оттестированые на его ОСьке, а разработчик ПО на страницах загрузки программы указывает зависимости/

Пример: проигрыватель в стиле winamp QMMP (http://qmmp.ylsoftware.com/download_ru.php)


Название: Re: Что надо для переноса исполняемой програ&
Отправлено: lit-uriy от Ноябрь 13, 2008, 16:00
Пример ОС openSUSE (http://software.opensuse.org/search), наберите в поле поиска "Qt4" вам вывалится список уже собраных пакетов для Qt4.

Мало того если зделаете для своего приложения пакет RPM или APT, то при установке пакета менеджер пакетов сам скажет или даже придлжет загрузить недостающие пакеты.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Ноябрь 13, 2008, 17:18
Я хочу распространять программу под линукс, платно с бесплатной триальной версией, только бинарник. Никаких исходников и предпочтительно чтобы пользователю нужно было скачать только один файл под любой линукс. Как это возможно сделать?


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Ноябрь 13, 2008, 17:24
Пример: проигрыватель в стиле winamp QMMP (http://qmmp.ylsoftware.com/download_ru.php)

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


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: pastor от Ноябрь 13, 2008, 17:50
Как это возможно сделать?

В таком случае собирай Qt сатически. БУдет у тебя один исполняемы файл. Но и тогда будут ограничения, т.к. остануться зависимости от системный библиотек.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Ноябрь 13, 2008, 18:08
Ну что статичиски это я и сам понял, я как раз про "остануться зависимости от системных библиотек", насколько это проблемно? Для той же виндовс тоже остаются зависимости от системных dll, но ведь без проблем работает на любой винде.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: BRE от Ноябрь 13, 2008, 18:20
Ну что статичиски это я и сам понял, я как раз про "остануться зависимости от системных библиотек", насколько это проблемно? Для той же виндовс тоже остаются зависимости от системных dll, но ведь без проблем работает на любой винде.
Ну это сильно сказано... windows 98, windows 95, windows 3.1.
Думаю сейчас уже все сидят на glibc 2. Делай сборку для нее.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Ноябрь 13, 2008, 18:41
Я попробовал на Win98 и 2000, работает, Win95/NT подозреваю тоже будет работать но они мне уже не инетресны.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: a_n_y_a от Ноябрь 14, 2008, 09:18
для линуха надо найти пакет Qt от разработчика этого дистрибутива ОСьки. И его ставить.
Только что проверил, eclipse предлагает для линукса х32 один пакет с исполняемыми файлами. Его распаковал в каталог, запустил и все работает без каких либо настроек. Как они это делают? Ведь работает для любой версии и сборки линукса?


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Hort от Ноябрь 14, 2008, 09:26
для линуха надо найти пакет Qt от разработчика этого дистрибутива ОСьки. И его ставить.
Только что проверил, eclipse предлагает для линукса х32 один пакет с исполняемыми файлами. Его распаковал в каталог, запустил и все работает без каких либо настроек. Как они это делают? Ведь работает для любой версии и сборки линукса?
как говорилось в моей теме - для этого надо быть экспертом Линукс. знать все зависимости и тонкости qt билиотеки, перепробовать немало дистрибутивов с ней
http://www.prog.org.ru/topic_8004_0.html (http://www.prog.org.ru/topic_8004_0.html)


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: ритт от Ноябрь 14, 2008, 10:26
a_n_y_a, жжёшь! eclipse на жабе :)
зато саму жре порой без шаманства не установишь...простой пример: пробовали установить жре на х86_64-пюре, где нет папочки /lib64 и в частности /lib64/ld-linux*.so ? бгг...


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Ноябрь 14, 2008, 10:31
А что такое Qt for Embedded Linux? Там вроде свой графический движок и оконная система, возможно ли его применить для всех обычных версий линуксов?


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: lit-uriy от Ноябрь 14, 2008, 11:02
2 Detonator,
во-первых, Thunderbird тоже имеет зависимости, от GTK насколько я помню.
во-вторых, Qt for Embedded Linux - для встраиваемы систем (КПК, смартфоны и прочие устройства)


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: ритт от Ноябрь 14, 2008, 11:27
прямые зависимости зандербёрда:
Цитировать
Required
Gtk2
libIDL
Zip

Recommended
NSS

Optional
Unzip
libgnomeui
OpenLDAP
и ещё набор косвенных зависимостей...
собирать такого монстра статиком бессмысленно (есть тот же фф на общем движке)...


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Ноябрь 14, 2008, 11:34
Т.е. если писать программу с зависимостью только от Qt4.4.3, то проблема совсместимости будет решена?


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: ритт от Ноябрь 14, 2008, 12:02
можно, конечно, попробовать. но думаю, всё-равно смогут помешать гцц и глибси разных версий на исходной и конечной системах.
по опыту могу сказать, что проблем не будет, если версии библиотек из зависимостей на исходной системе будут не выше, чем на целевой системе (исключение - gtk и т.п.). при этом желательно чтобы параметры сборки совпадали (так некоторые параметры оптимизации иногда могут сделать бинарь нерабочим на целевой системе). то же касается флагов упаковки - обычно лучше их вообще не использовать, если программа пишется не под "встраиваемые устройства".
и плюс к этому возьмите за привычку собирать позиционно-независимые бинарники - это действительно может упростить задачу и облегчить жизнь в будущем.

но часто бывает всё проще - когда-то (ещё в линейке glibc2.2/2.3) я не беспокоился о таких вопросах и просто копировал нужные бинари из редхата в свою сборку и обратно...


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Ноябрь 14, 2008, 12:36
"позиционно-независимые бинарники" - что имеется в виду?


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: ритт от Ноябрь 14, 2008, 12:38
position-independent code (PIC) / position-independent executable (PIE)
http://en.wikipedia.org/wiki/Position-independent_code


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Alex Custov от Ноябрь 14, 2008, 11:50
собирай rpm и deb. Только зависимости правильно пропиши, тогда пакетный менеджер сам всё доустановит. И собирать желательно на более старой версии glibc, например на 2.3 или 2.4.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: SASA от Ноябрь 17, 2008, 10:06
Под виндой тоже не всё гладко.
Собирали на VS2008. Переписали на чистую машину с вин XP sp2 – фиг. Переписали студийные библиотеки, которых не хватало – опять не работает. Написали студией инсталлятор  - всё OK. Но программка весит ~ 10 Mb, а инсталлятор ~ 200Mb


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Ноябрь 17, 2008, 12:03
Цитировать
Переписали студийные библиотеки, которых не хватало


Для VS2008 их нужно не просто переписывать, а именно устанавливать специальным установщиком runtime размером 1.7 Мб. При этом там еще что-то прописывается чтобы все заработало.
Проще компилить в полный статик /MT.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Hort от Ноябрь 17, 2008, 19:02
Под виндой тоже не всё гладко.
Собирали на VS2008. Переписали на чистую машину с вин XP sp2 – фиг. Переписали студийные библиотеки, которых не хватало – опять не работает. Написали студией инсталлятор  - всё OK. Но программка весит ~ 10 Mb, а инсталлятор ~ 200Mb
за это и не люблю студию. MinGW - самое оно - откомпилировал на XP SP3 - запустилосб без проблем на чистом Win2000


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: darkmacho от Декабрь 07, 2008, 23:00
Так что нужно делать если я хочу что б моя программа запускалась на других компах(XP или Vista) ? опять собирать qt со -static


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: kirill от Декабрь 08, 2008, 06:50
Так что нужно делать если я хочу что б моя программа запускалась на других компах(XP или Vista) ? опять собирать qt со -static
Статически не надо.
Надо посмотреть зависимости с помощью depends из состава студии какие либы оно юзает и скопировать их в папку с прогой.
Чтобы поставить студийный рантайм можно заюзать инсталлер например WISE который ставит рантайм как надо либо вручную поставить
http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: darkmacho от Декабрь 08, 2008, 11:59
т.е. просто нужны только либы и ничего устанавливать не надо?


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Декабрь 08, 2008, 12:14
вся прелесть Qt в том что можно все в один exe запихать включая ресурсы которые так просто из него не вытащишь. А это можно сделать только статикой.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: darkmacho от Декабрь 08, 2008, 12:31
т.е. qt собирается или проект в static что то я не понял


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Декабрь 08, 2008, 19:19
вообще все.


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Murru от Декабрь 11, 2008, 21:21
А можно по-подробнее как это проделать? (более того я уже установил Qt "по дефолту", а теперь хочу чтобы собиралось в один екзешник все и работало на любой виндовз машине без установки дополнительных библиотек ) Использую Qt 4.4.1+QDEvelop+WinXP


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: darkmacho от Декабрь 11, 2008, 21:38
Я делал все как тут: http://www.prog.org.ru/topic_8009_0.html
описано попробовал на другом компе, пошло(проверял только на одном)


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: pastor от Декабрь 17, 2008, 19:08
Про минимальные требования к библиотекам, от который зависит Qt, пожно посомтреть здесь Qt for X11 Requirements (http://doc.trolltech.com/4.4/requirements-x11.html)


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: Detonator от Декабрь 17, 2008, 20:20
Осталось найти и прикомпилить  кпрограмме X11 для WinXP :)


Название: Re: Что надо для переноса исполняемой программы с Qt на другой комп?
Отправлено: pastor от Декабрь 17, 2008, 20:27
Осталось найти и прикомпилить  кпрограмме X11 для WinXP :)

Ну изначально тема была создана по проблеме переноса проги между линуксами. Так что мой пост к месту :)