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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы?  (Прочитано 5670 раз)
abodnya
Гость
« : Апрель 12, 2013, 16:49 »

У меня стоит Qt5, у друга Qt4. Я написал курсач с использованием QtOpenGL, но друг не может у себя его запустить, т.к. не хватает либы  libQt5OpenGL.so.5
Как ему запустить мой курсач, при этом не ставя себе Qt5 ?
Могу ли я прикладывать к исполняемому файлу эту либу так, чтоб программа искала эту либу в текущей папке, а не в системном каталоге?
И могу ли я заставить QtCreator автоматически прикладывать эти либы к готовому файлу?

Еще вопрос. Аналогичная ситуация у меня если компилю под винду. Приходится тащить с собой кучу тяжелых dll-ок. Как я могу настроить программу так, чтоб она создавала одну единую dll-ку со всеми нужными мне функциями, а не используемые в dll не добавляла, чтоб на выходе доп.библиотеки к программе весили на порядок меньше?
Записан
Bepec
Гость
« Ответ #1 : Апрель 12, 2013, 16:57 »

DLL зависимости появляются от того, какие компоненты ты использовал в программе. То, что ты не использовал - с тебя программа и не потребует.

Да, чтобы программа запускалась на других компах, необходимо таскать с собой DLL.

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

Да, (уверен на 50%) ты можешь заставить QtCreator копировать dll в папку с релизом твоей программы Веселый

PS тяжёлые это 10 мб? ну ну.
Записан
abodnya
Гость
« Ответ #2 : Апрель 12, 2013, 17:19 »

Ну там идет одна длл-ка на 180 мб (вроде бы QtGuid.dll, не уверен точно), для программы. которая весит меньше мегабайта таскать с собой 180 мб неразумно как по мне. Если б либа была и правда 10 мб, это не составляло б проблемы.

Можно пожалуйста получить ссылки на гайды, желательно на русском, но можно и на английском?
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #3 : Апрель 12, 2013, 17:23 »

Ну там идет одна длл-ка на 180 мб (вроде бы QtGuid.dll, не уверен точно), для программы. которая весит меньше мегабайта таскать с собой 180 мб неразумно как по мне. Если б либа была и правда 10 мб, это не составляло б проблемы.
А ты не таскай отладочную версию, таскай релизную.  Подмигивающий
Записан
Bepec
Гость
« Ответ #4 : Апрель 12, 2013, 17:29 »

Ссылки не получить. Это аксиомы, получаемые опытным путём Веселый

Пару слов о dll в Qt. Все dll с буквой d на конце - дебажные.
Дебаг сборка программы - она для отладки и не предназначена для использования и передачи. Она настолько огромна, потому что содержит отладочную информацию.

Потому что надо делать - собрать релизную версию программы и тянуть релизные dll (без d).

Минимальная сборка программы составляет около 5 мб (для Qt 4.7.2).
Записан
abodnya
Гость
« Ответ #5 : Апрель 12, 2013, 17:32 »

Спасибо за ответ) Теперь буду только релизную версию юзать для передачи программ)

Остался открытым второй вопрос. Могу ли я также таскать *.so линуксные либы с прогой, как я это делаю сейчас под виндой?
Или в линуксе пользователь обязан ставить необходимые пакеты через apt-get ?
Записан
maint
Гость
« Ответ #6 : Апрель 12, 2013, 17:46 »

Спасибо за ответ) Теперь буду только релизную версию юзать для передачи программ)

Остался открытым второй вопрос. Могу ли я также таскать *.so линуксные либы с прогой, как я это делаю сейчас под виндой?
Или в линуксе пользователь обязан ставить необходимые пакеты через apt-get ?
это смотря какой линух. Может и не apt-get, а yum скажем. Добра хватает  :-). В принципе, если линухи одноименные и одной версии, то можно и с собой. Либо бросить в какой-нибудь /usr/local/lib. В теории можно в один каталог с программой и запускать.
Записан
Bepec
Гость
« Ответ #7 : Апрель 12, 2013, 18:28 »

Линуксов дофига версий со своими особенностями. Потому скомпиленное на одном может не запуститься на другом.

Вывод? можно, но есть шанс некорректной работы.
Записан
abodnya
Гость
« Ответ #8 : Апрель 12, 2013, 18:33 »

хорошо, как тогда мне сделать так, чтоб программа при первом запуске искала недостающие либы и давала запрос на их закачку, описывая точное название недостающих пакетов?
Записан
quiet_readonly
Гость
« Ответ #9 : Апрель 12, 2013, 18:44 »

хорошо, как тогда мне сделать так, чтоб программа при первом запуске искала недостающие либы и давала запрос на их закачку, описывая точное название недостающих пакетов?
Сделать программу-обёртку, которая сама будет иметь минимум зависимостей и будет проверять наличие нужных библиотек (хоть бы и через ldd), при отсутствии предлагать установить (хоть бы и через package kit). Но это не принято в linux (и рабочих программ с таким трюком я не видел), лучше компилируйте с Qt4, особой разницы пока что нет.
Записан
abodnya
Гость
« Ответ #10 : Апрель 12, 2013, 21:10 »

Уже перешел на Qt5 ) Вот всё жду пока у них поддержка Android и iOS полностью наладится, та и написание приложений под Ubuntu Phone пока импонирует
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #11 : Апрель 27, 2013, 04:19 »

Года четыре назад я написал небольшую утилиту (с использованием Qt 4.3, кажется) и выложил на сайт, ее скачало человек 200-300. Она использовала сеть, STL, немного виджетов. Чтобы с комфортом ее раздать, нашел torrents.ru инсталлятор, с помощью которого делают репаки игр. Скормил ему свой .exe, он сам нашел все нужные DLL, запаковал, и при распаковке DLL падали в каталог программы. От скачавших не поступило ни одной рекламации (видимо, у всех все работало), файл-инсталлер весил несколько мегабайт.
Записан

Эвтаназия - наше хобби!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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