Russian Qt Forum
Сентябрь 30, 2024, 06:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Распространение на linux - системах без статической сборки  (Прочитано 10098 раз)
yarick
Гость
« : Октябрь 28, 2012, 21:54 »

Я компилирую мой проект на kubuntu с установленным qt-creator. Создаётся исполняемый файл, который можно легко запустить как "./myfile" на этой системе. Аналогично под Win7 создаётся exe.

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

Статически я собирать не хочу - мне кажется это плохой идеей. Мне нужно чтобы мою программку, например, можно было запустить со вставленной флешки, без прав суперюзера, без установки. На винде это возможно же
Записан
Bepec
Гость
« Ответ #1 : Октябрь 28, 2012, 22:00 »

Эммм... По-моему linux такая штука, что "просто" запустить файл у тебя не получится :/

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

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

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

Сообщений: 606



Просмотр профиля
« Ответ #2 : Октябрь 29, 2012, 08:45 »

Думаю стоит попробовать положить рядом с исполняемым файлом все необходимые *.so и настроить rpath.
Записан
V1KT0P
Гость
« Ответ #3 : Октябрь 29, 2012, 10:21 »

Думаю стоит попробовать положить рядом с исполняемым файлом все необходимые *.so и настроить rpath.
Ты говоришь ересь, в Linux-е принято создавать RPM и DEB пакеты с зависимостями.
Записан
Serr500
Гость
« Ответ #4 : Октябрь 29, 2012, 10:24 »

Почему ересь? Автор же пишет
Мне нужно чтобы мою программку, например, можно было запустить со вставленной флешки, без прав суперюзера, без установки.
ИМХО, с rpath самый верный метод.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #5 : Октябрь 29, 2012, 11:37 »

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

Гугль в помощь
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Октябрь 29, 2012, 11:54 »

Ты говоришь ересь, в Linux-е принято создавать RPM и DEB пакеты с зависимостями.
Цитата: yarick
Мне нужно чтобы мою программку, например, можно было запустить со вставленной флешки, без прав суперюзера, без установки.

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

Записан

Qt 5.11/4.8.7 (X11/Win)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Октябрь 29, 2012, 14:25 »

Статический вариант в данном случае - то что надо.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Октябрь 29, 2012, 15:41 »

Статический вариант в данном случае - то что надо.
Тогда в пакете должны быть исходники либо указание, где их можно получить. GPL однако)
Записан

Qt 5.11/4.8.7 (X11/Win)
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #9 : Октябрь 29, 2012, 17:29 »

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

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

Гугль в помощь
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Октябрь 29, 2012, 17:41 »

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

Нужно просто поставить соотвествующие -dev пакеты, почти всегда в них есть статические версии библиотек.
Записан
V1KT0P
Гость
« Ответ #11 : Октябрь 29, 2012, 21:31 »

Почему ересь? Автор же пишет
Мне нужно чтобы мою программку, например, можно было запустить со вставленной флешки, без прав суперюзера, без установки.
ИМХО, с rpath самый верный метод.
Извиняюсь, проглядел.

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

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

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #12 : Октябрь 30, 2012, 11:01 »

Если не собирать Всё статически, тогда вероятность отхватить конфликт версий повышается.

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

Гугль в помощь
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #13 : Октябрь 30, 2012, 15:55 »

Если не собирать Всё статически, тогда вероятность отхватить конфликт версий повышается.

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

Не одна, у них есть пакеты для Debian и Ubuntu, для других систем работа не гарантирована. На самой убунту у них сборка для 10.04, то есть они рассчитывают на то, что  все версии старше 10.04 обратно совместимы с 10.04 (так и есть), и поэтому этот deb пакет работает и на 11.х. Но если вдруг в 13.04 поломается ABI каких-то библиотек, то пакет перестанет работать.
« Последнее редактирование: Октябрь 30, 2012, 15:58 от Alex Custov » Записан
vbi
Гость
« Ответ #14 : Январь 11, 2013, 01:58 »

А можете подробнее описать как же собрать RPM или DEB пакет из собранного в QT исполняемого файла и зависемых so-библиотек?
Я читал разные инструкции по сборе RPM, там какие-то исходники нужны, так сложно описано, я запутался... А мне только исполняемый файл и библиотеки запаковать...
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.088 секунд. Запросов: 23.