Название: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: abodnya от Апрель 12, 2013, 16:49 У меня стоит Qt5, у друга Qt4. Я написал курсач с использованием QtOpenGL, но друг не может у себя его запустить, т.к. не хватает либы libQt5OpenGL.so.5
Как ему запустить мой курсач, при этом не ставя себе Qt5 ? Могу ли я прикладывать к исполняемому файлу эту либу так, чтоб программа искала эту либу в текущей папке, а не в системном каталоге? И могу ли я заставить QtCreator автоматически прикладывать эти либы к готовому файлу? Еще вопрос. Аналогичная ситуация у меня если компилю под винду. Приходится тащить с собой кучу тяжелых dll-ок. Как я могу настроить программу так, чтоб она создавала одну единую dll-ку со всеми нужными мне функциями, а не используемые в dll не добавляла, чтоб на выходе доп.библиотеки к программе весили на порядок меньше? Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: Bepec от Апрель 12, 2013, 16:57 DLL зависимости появляются от того, какие компоненты ты использовал в программе. То, что ты не использовал - с тебя программа и не потребует.
Да, чтобы программа запускалась на других компах, необходимо таскать с собой DLL. Да, ты можешь собирать программу статически (1 файл), но для этого нужно собрать статически всю Qt и познать дзен. Да, (уверен на 50%) ты можешь заставить QtCreator копировать dll в папку с релизом твоей программы :D PS тяжёлые это 10 мб? ну ну. Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: abodnya от Апрель 12, 2013, 17:19 Ну там идет одна длл-ка на 180 мб (вроде бы QtGuid.dll, не уверен точно), для программы. которая весит меньше мегабайта таскать с собой 180 мб неразумно как по мне. Если б либа была и правда 10 мб, это не составляло б проблемы.
Можно пожалуйста получить ссылки на гайды, желательно на русском, но можно и на английском? Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: alex312 от Апрель 12, 2013, 17:23 Ну там идет одна длл-ка на 180 мб (вроде бы QtGuid.dll, не уверен точно), для программы. которая весит меньше мегабайта таскать с собой 180 мб неразумно как по мне. Если б либа была и правда 10 мб, это не составляло б проблемы. А ты не таскай отладочную версию, таскай релизную. ;)Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: Bepec от Апрель 12, 2013, 17:29 Ссылки не получить. Это аксиомы, получаемые опытным путём :D
Пару слов о dll в Qt. Все dll с буквой d на конце - дебажные. Дебаг сборка программы - она для отладки и не предназначена для использования и передачи. Она настолько огромна, потому что содержит отладочную информацию. Потому что надо делать - собрать релизную версию программы и тянуть релизные dll (без d). Минимальная сборка программы составляет около 5 мб (для Qt 4.7.2). Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: abodnya от Апрель 12, 2013, 17:32 Спасибо за ответ) Теперь буду только релизную версию юзать для передачи программ)
Остался открытым второй вопрос. Могу ли я также таскать *.so линуксные либы с прогой, как я это делаю сейчас под виндой? Или в линуксе пользователь обязан ставить необходимые пакеты через apt-get ? Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: maint от Апрель 12, 2013, 17:46 Спасибо за ответ) Теперь буду только релизную версию юзать для передачи программ) это смотря какой линух. Может и не apt-get, а yum скажем. Добра хватает :-). В принципе, если линухи одноименные и одной версии, то можно и с собой. Либо бросить в какой-нибудь /usr/local/lib. В теории можно в один каталог с программой и запускать.Остался открытым второй вопрос. Могу ли я также таскать *.so линуксные либы с прогой, как я это делаю сейчас под виндой? Или в линуксе пользователь обязан ставить необходимые пакеты через apt-get ? Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: Bepec от Апрель 12, 2013, 18:28 Линуксов дофига версий со своими особенностями. Потому скомпиленное на одном может не запуститься на другом.
Вывод? можно, но есть шанс некорректной работы. Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: abodnya от Апрель 12, 2013, 18:33 хорошо, как тогда мне сделать так, чтоб программа при первом запуске искала недостающие либы и давала запрос на их закачку, описывая точное название недостающих пакетов?
Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: quiet_readonly от Апрель 12, 2013, 18:44 хорошо, как тогда мне сделать так, чтоб программа при первом запуске искала недостающие либы и давала запрос на их закачку, описывая точное название недостающих пакетов? Сделать программу-обёртку, которая сама будет иметь минимум зависимостей и будет проверять наличие нужных библиотек (хоть бы и через ldd), при отсутствии предлагать установить (хоть бы и через package kit). Но это не принято в linux (и рабочих программ с таким трюком я не видел), лучше компилируйте с Qt4, особой разницы пока что нет.Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: abodnya от Апрель 12, 2013, 21:10 Уже перешел на Qt5 ) Вот всё жду пока у них поддержка Android и iOS полностью наладится, та и написание приложений под Ubuntu Phone пока импонирует
Название: Re: Как заставить IDE при компилировании прикладывать к исполняемому файлу либы? Отправлено: PinkPanther от Апрель 27, 2013, 04:19 Года четыре назад я написал небольшую утилиту (с использованием Qt 4.3, кажется) и выложил на сайт, ее скачало человек 200-300. Она использовала сеть, STL, немного виджетов. Чтобы с комфортом ее раздать, нашел torrents.ru инсталлятор, с помощью которого делают репаки игр. Скормил ему свой .exe, он сам нашел все нужные DLL, запаковал, и при распаковке DLL падали в каталог программы. От скачавших не поступило ни одной рекламации (видимо, у всех все работало), файл-инсталлер весил несколько мегабайт.
|