Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: yarick от Октябрь 28, 2012, 21:54



Название: Распространение на linux - системах без статической сборки
Отправлено: yarick от Октябрь 28, 2012, 21:54
Я компилирую мой проект на kubuntu с установленным qt-creator. Создаётся исполняемый файл, который можно легко запустить как "./myfile" на этой системе. Аналогично под Win7 создаётся exe.

Для распространения для винды я просто копирую dll-библиотеки типа qtCore4.dll и плагины в папку с программой - всё отлично работает.
А вот для линукса... Насколько я понял, нужно также копировать .so файлы в папку с программой?

Статически я собирать не хочу - мне кажется это плохой идеей. Мне нужно чтобы мою программку, например, можно было запустить со вставленной флешки, без прав суперюзера, без установки. На винде это возможно же


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: Bepec от Октябрь 28, 2012, 22:00
Эммм... По-моему linux такая штука, что "просто" запустить файл у тебя не получится :/

Насчёт библиотек не уверен, но насколько я знаю, библиотеки должны быть скомпилированы под каждую *-nix систему. А их дофига. И меняются они очень часто и веток у них дофига :)

Ты возьмёшь на себя желание собирать библиотеки под каждую каждую систему и следить за их обновлениями и ... так далее.

PS обычно распространяются исходники, которые можно собрать.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: alex312 от Октябрь 29, 2012, 08:45
Думаю стоит попробовать положить рядом с исполняемым файлом все необходимые *.so и настроить rpath.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: V1KT0P от Октябрь 29, 2012, 10:21
Думаю стоит попробовать положить рядом с исполняемым файлом все необходимые *.so и настроить rpath.
Ты говоришь ересь, в Linux-е принято создавать RPM и DEB пакеты с зависимостями.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: Serr500 от Октябрь 29, 2012, 10:24
Почему ересь? Автор же пишет
Мне нужно чтобы мою программку, например, можно было запустить со вставленной флешки, без прав суперюзера, без установки.
ИМХО, с rpath самый верный метод.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: navrocky от Октябрь 29, 2012, 11:37
Много проприетарного софта распространяется со своими либами. Основная фишка в том что собирать надо на как можно более старой системе, тогда с большей вероятностью программа будет запускаться на всех современных дистрах. Ну и тянуть с собой как можно больше библиотек по зависимостям.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: GreatSnake от Октябрь 29, 2012, 11:54
Ты говоришь ересь, в Linux-е принято создавать RPM и DEB пакеты с зависимостями.
Цитата: yarick
Мне нужно чтобы мою программку, например, можно было запустить со вставленной флешки, без прав суперюзера, без установки.

Цитата: alex312
Думаю стоит попробовать положить рядом с исполняемым файлом все необходимые *.so и настроить rpath.
Либо своять запускающий скриптик в котором прописать переменную LD_LIBRARY_PATH.



Название: Re: Распространение на linux - системах без статической сборки
Отправлено: Alex Custov от Октябрь 29, 2012, 14:25
Статический вариант в данном случае - то что надо.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: GreatSnake от Октябрь 29, 2012, 15:41
Статический вариант в данном случае - то что надо.
Тогда в пакете должны быть исходники либо указание, где их можно получить. GPL однако)


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: navrocky от Октябрь 29, 2012, 17:29
Статический вариант в данном случае - то что надо.

Статика это слишком сложно и не всегда срабатывает. Кажется вебкит не собирается статически.. еще какие-то проблемы были. И желательно весь стек системных библиотек пересобирать статически, не только Qt.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: Alex Custov от Октябрь 29, 2012, 17:41
Статика это слишком сложно и не всегда срабатывает. Кажется вебкит не собирается статически.. еще какие-то проблемы были. И желательно весь стек системных библиотек пересобирать статически, не только Qt.

Нужно просто поставить соотвествующие -dev пакеты, почти всегда в них есть статические версии библиотек.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: V1KT0P от Октябрь 29, 2012, 21:31
Почему ересь? Автор же пишет
Мне нужно чтобы мою программку, например, можно было запустить со вставленной флешки, без прав суперюзера, без установки.
ИМХО, с rpath самый верный метод.
Извиняюсь, проглядел.

Статический вариант в данном случае - то что надо.

Статика это слишком сложно и не всегда срабатывает. Кажется вебкит не собирается статически.. еще какие-то проблемы были. И желательно весь стек системных библиотек пересобирать статически, не только Qt.
Вообще-то абсолютно все статически собирать нежелательно. Вроде как при статической линковки библиотеки для системных вызовов могут возникнуть проблемы.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: navrocky от Октябрь 30, 2012, 11:01
Если не собирать Всё статически, тогда вероятность отхватить конфликт версий повышается.

Skype, однако, вообще не тащит с собой библиотеки, использует все системные и при этом одна сборка для всех rpm-дистрибутивов и вторая для deb. Как им это удалось?


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: Alex Custov от Октябрь 30, 2012, 15:55
Если не собирать Всё статически, тогда вероятность отхватить конфликт версий повышается.

Skype, однако, вообще не тащит с собой библиотеки, использует все системные и при этом одна сборка для всех rpm-дистрибутивов и вторая для deb. Как им это удалось?

Не одна, у них есть пакеты для Debian и Ubuntu, для других систем работа не гарантирована. На самой убунту у них сборка для 10.04, то есть они рассчитывают на то, что  все версии старше 10.04 обратно совместимы с 10.04 (так и есть), и поэтому этот deb пакет работает и на 11.х. Но если вдруг в 13.04 поломается ABI каких-то библиотек, то пакет перестанет работать.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: vbi от Январь 11, 2013, 01:58
А можете подробнее описать как же собрать RPM или DEB пакет из собранного в QT исполняемого файла и зависемых so-библиотек?
Я читал разные инструкции по сборе RPM, там какие-то исходники нужны, так сложно описано, я запутался... А мне только исполняемый файл и библиотеки запаковать...


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: kuzulis от Январь 11, 2013, 09:48
man checkinstall


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: sergek от Январь 11, 2013, 09:53
А попробуйте GiftWrap:
http://rus-linux.net/nlib.php?name=/MyLDP/po/giftwrap/create-ubuntu-packages-with-giftwrap.html (http://rus-linux.net/nlib.php?name=/MyLDP/po/giftwrap/create-ubuntu-packages-with-giftwrap.html)
https://launchpad.net/giftwrap (https://launchpad.net/giftwrap),
вдруг получится ;)
Если сработает, отпишите. У самого руки не доходят...


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: vbi от Январь 12, 2013, 02:17
Получилось собрать DEB пакет по инструкции:

http://linux.vsevteme.ru/2009/05/14/blog/delaem-deb-paket-svoimi-rukami-chast-pervaya (http://linux.vsevteme.ru/2009/05/14/blog/delaem-deb-paket-svoimi-rukami-chast-pervaya)

В настройках в зависимости (Depends) добавил: libqt4-webkit, libqtcore4, libqt4-network, libqtgui4

И все. Перед установкой пакета программы устанавливаются нужные пакеты-зависимости с библиотеками а потом сама прога.
Отдельно еще нашел как сделать ярлык на программу в меню и значок.


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: vbi от Январь 12, 2013, 02:17
GiftWrap пробовал - не получилось с им собрать пакет


Название: Re: Распространение на linux - системах без статической сборки
Отправлено: sergek от Январь 12, 2013, 12:40
Вот еще рекомендации:
http://habrahabr.ru/post/78094/ (http://habrahabr.ru/post/78094/)