Название: Распространение на 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/) |