Russian Qt Forum

Qt => Общие вопросы => Тема начата: Zeka13 от Апрель 27, 2012, 18:16



Название: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Zeka13 от Апрель 27, 2012, 18:16
Всем доброго времени суток.
Мой проект собран с использованием библиотеки qwt

Речь пойдёт о Linux

У меня в системе установлен пакет libqwt-dev (библиотека в /usr/lib), собственно с этим пакетом к меня всё работает и на других Ubuntu с этим пакетом тоже, но если я пытаюсь запустить бинарник на Ubuntu без этого пакета, то получаю

./plot4: error while loading shared libraries: libqwt.so.6: cannot open shared object file: No such file or directory

Положить библиотеку просто рядом с бинарником, как я это делаю в маздае, не прокатило, как тогда поступить?

Заранее спасибо за ответы!


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: navrocky от Апрель 27, 2012, 18:28
user@host> export LD_LIBRARY_PATH=. ; ./my_cool_prog_with_qwt


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Alex Custov от Апрель 27, 2012, 18:48
Поставить пакет, как ни странно)


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Zeka13 от Апрель 27, 2012, 20:38
navrocky, зачем?

Alex Custov
Цитировать
Поставить пакет, как ни странно)

P.S. надо чтоб как в винде, ничего от пользователя не требовалось установить!
Я думал это и так понятно ...


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: sudo от Апрель 27, 2012, 23:05

P.S. надо чтоб как в винде, ничего от пользователя не требовалось установить!
Я думал это и так понятно ...

Собирать пакет, делать зависимости


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Zeka13 от Апрель 27, 2012, 23:21
собирать пакет ради одной либы?

а больше никак? :o


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Bepec от Апрель 28, 2012, 07:00
Это не винда. Это НЕ дружелюбный пользователю интерфейс. Это линукс :D


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: alexis031182 от Апрель 28, 2012, 08:43
Это не винда. Это НЕ дружелюбный пользователю интерфейс. Это линукс :D
Да, домохозяйки отдыхают :)


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: alexis031182 от Апрель 28, 2012, 08:46
собирать пакет ради одной либы?

а больше никак? :o
Так вроде ВСЕ приложения в Ubuntu собраны в пакеты. Если делать корректно, то собрать пакет нужно в независимости от того, использует ли программа дополнительные либы или нет.


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: navrocky от Апрель 28, 2012, 09:57
navrocky, зачем?

Что зачем? Я тебе показал как подгружать либы из папки в которой лежит бинарь.  Ты ведь этого хотел?

А если ты хочешь совсем чтобы как в винде, то это отдельная тема, надо не только qwt тащить но и всю бороду из системных либ (Qt, Xlib....). Или пересобрать пол системы в статике и слинковать со всем этим статически свой бинарь.

Хороший пример - google earth. Посмотри какие либы он с собой тащит и как их загружает.

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


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Bepec от Апрель 28, 2012, 10:18
Собрать около 10-20 пакетов и постоянно их поддерживать ;)


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Alex Custov от Апрель 28, 2012, 10:48
собирать пакет ради одной либы?

а больше никак? :o

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


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Zeka13 от Апрель 28, 2012, 11:02
navrocky, мне пользователю говорить каждый раз в терминал просить лезть или делать системный вызов из кода можно?(сорри если что-то не своими словами называю)
alexis031182, а вот и нет
пример:
tuxboot для linux долгое время распространялся просто как один бинарник и отлично работал, у меня даже остался для 64x машину, если не верите, могу скинуть


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Alex Custov от Апрель 28, 2012, 11:07
пример:
tuxboot для linux долгое время распространялся просто как один бинарник и отлично работал, у меня даже остался для 64x машину, если не верите, могу скинуть

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


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: alexis031182 от Апрель 28, 2012, 11:12
Это статически слинкованный бинарник. Мне, например, не нравится загаживать систему отдельными файлами, которые идут без пакетов.
++


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: navrocky от Апрель 28, 2012, 12:05
navrocky, мне пользователю говорить каждый раз в терминал просить лезть или делать системный вызов из кода можно?(сорри если что-то не своими словами называю)

Ты про bash-скрипты слышал?


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Zeka13 от Апрель 28, 2012, 12:14
navrocky, да, конечно

я могу его вызвать прямо из кода qt?

Alex Custov, как я могу такой сделать?


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: navrocky от Апрель 28, 2012, 12:15
navrocky, да, конечно

я могу его вызвать прямо из кода qt?

Зачем баш скрипт звать из кода? Положи его в /usr/bin и пусть его зовет пользователь.


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Zeka13 от Апрель 28, 2012, 14:59
я хочу, чтобы от пользователя ничего не требовалось, как с виндовс сборкой


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: navrocky от Апрель 28, 2012, 15:36
АААААААААААААА!!!!!! Ну сколько можно уже троллить?

Запакуй бинарь, либы и скрипт в пакет. При установке кинь скрипт в /usr/bin/, либы и бинарь в какой-нибудь /usr/share/myapp ... Сделай ярлык на скрипт, установи ярлык в /usr/share/applications. Скопируй уже свою иконку в /usr/share/icons/hicolor/XXxXX/apps/myapp.png.

Всё! Пользователю останется кликнуть по ярлыку.

Гугли инфу о том как создаются пакеты для дебиан и убунты. На этом я умолкаю.


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Zeka13 от Апрель 28, 2012, 16:04
я уже несколько раз говорил, что считаю делать пакет не рациональным решением для данного случая

если бы я упаковывал пакет, я бы просто зависимость ему поставил, но я этого делать не собираюсь

мой вопрос остаётся в силе


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Bepec от Апрель 28, 2012, 16:54
Тебе уже 100 раз ответили. Нет, нельзя так делаааать. Это не Windows. В линуксе нет "дружелюбного" отношения к пользователю.


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: alexis031182 от Апрель 28, 2012, 17:07
Может ещё в сторону какого-нибудь апп-инсталлера посмотреть, типа этого (http://izpack.org/we-love-izpack/) и иже с ним по гуглонавигатору (http://www.google.ru).


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: navrocky от Апрель 28, 2012, 17:11
IzPack is a one-stop solution for packaging, distributing and deploying applications for the Java platform.


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: alexis031182 от Апрель 28, 2012, 17:26
IzPack is a one-stop solution for packaging, distributing and deploying applications for the Java platform.
Свинство, а я уж обрадовался... :(

Но вроде как-то краем уха-глаза замечал подобные затеи в сети. Может чего и реализовано уже


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: navrocky от Апрель 28, 2012, 17:35
http://portablelinuxapps.org/ - может тебя это заинтересует? Судя по всему можно скачать SDK и сооружать свои такие приложения.

http://www.linux.org.ru/news/opensource/5134856 - тут немного по русски разжевали.


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: alexis031182 от Апрель 28, 2012, 18:03
Комментарии на Лоре как обычно доставляют ))


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Alex Custov от Апрель 30, 2012, 15:57
Тебе уже 100 раз ответили. Нет, нельзя так делаааать. Это не Windows. В линуксе нет "дружелюбного" отношения к пользователю.

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


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Zeka13 от Апрель 30, 2012, 17:58
не кормите троллей  8)


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Bepec от Май 01, 2012, 09:21
Дружелюбный - это взял и работай ;) Инитуитивно понятный, как мышка ;)

Недружелюбный - когда взял, собрал, посмотрел ошибки, скачал ещё 4 пакета, скомпилировал, нашёл документацию, скачал, прочитал документацию, нашёл 1 флаг для компиляции, добавил, собрал, работаешь ;)

PS И вообще, мне, как простому пользователю, нет никакого кайфа собирать из 3-7 пакетов одну программу ;)


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: LisandreL от Май 01, 2012, 09:44
Дружелюбный - это взял и работай. Инитуитивно понятный, как мышка
Ну так как раз вариант с пакетом вполне дружелюбный.
Пользователь запускает гуёвый менеджер пакетов, выбирает нужную программу, жмёт устанавливать и этот менеджер уже скачивает и устанавливает все нужные пакеты (по прописанным зависимостям).
Очень интуитивно и удобно, в бонус к этому ещё и централизованная проверка обновлений (в отличии от Винды, где куча прописавшихся в автозапуск апдейтеров забивают канал и тормозят систему на старте).

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


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Bepec от Май 01, 2012, 11:02
Самое худшее, когда скачиваешь пакет, он скачивает ещё 3 пакета, которые скачивают ещё по 2 пакета каждый и... И это всё не работает ;)


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Alex Custov от Май 01, 2012, 11:46
Недружелюбный - когда взял, собрал, посмотрел ошибки, скачал ещё 4 пакета, скомпилировал, нашёл документацию, скачал, прочитал документацию, нашёл 1 флаг для компиляции, добавил, собрал, работаешь ;)

Для этого авторы обычно и делают пакеты, которые ставятся одним движением руки, и не засиоряют систему отдельными файлами, внутри которых суммарно будет статически вкомпилировано по несколько версий Qt, zlib и иже с ними.


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Alex Custov от Май 01, 2012, 11:47
Самое худшее, когда скачиваешь пакет, он скачивает ещё 3 пакета, которые скачивают ещё по 2 пакета каждый и... И это всё не работает ;)

А ты эти зависимости вручную ставишь, что ли?


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Bepec от Май 01, 2012, 17:58
Нет. Не руками ;) Просто пакет допустим редмайна, тянет последний пакет php, который тянет последний ***, а в конце идёт пакет, который несовместим с версией первого пакета ;)

Конечно ломастеры и на виндовс есть, но... В линуксе мне почему то только такие и попадаются ;)


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Alex Custov от Май 01, 2012, 18:04
Пакет для какого дистрибутива? Выложи его сюда.


Название: Re: Qt взять нужную библиотеку на другую Ubuntu
Отправлено: Zeka13 от Май 01, 2012, 23:47
хватит кормить троллей, где вообще модераторы, почему в темах флуд?