Страницы

Поиск по вопросам

суббота, 4 января 2020 г.

Перенос Qt приложения в Linux

#linux #qt #dll #qtcreator


Добрый день.
Тема, наверное, не нова, но вразумительной инструкции так и не нашел. Выбрал Qt,
как инструмент именно кроссплатформенного программирования, для меня это критично.
Пока все во фреймворке устраивает, а вот методология сборки либ и переноса на другие
машины меня разочаровует. Особенно это касается *nix систем. Если в винде достаточно
вручную собрать в папку с бинарником необходимые dll (что само по себе немного напрягает,
неужели создатели такой удобной IDE, как QtCreator не смогли добавить инструмент для
автоматической сборки всего и вся?), то в Linux я совсем запутался, как создать переносимое
приложение без необходимости устанавливать весь пакет Qt на целевой машине? Есть ли
доступные пошаговые инструкции? Может кто своими словами втолкует? В Linux ориентируюсь
на уровне пользователя. 
Или может есть своя "философия" распространения приложений, о которой я не знаю?
Заранее благодарю сообщество.
    


Ответы

Ответ 1



Переносимые приложения в линуксе зло. Все приложения должны устанавливатся пакетным менеджером, который и следит за зависимостями, необходимыми библиотеками. Это позволяет не ставить для каждого приложения копии необходимых библиотек. Это не значит, что Вы не можете его сделать, но нет никакой гарантии, что нужная библиотека будет работать в данном дистрибутиве, которых тысячи. Я думаю, Вам целесообразнее разобратся с автоматизированными системами сборки, как к примеру Ланчпад для убунты http://help.ubuntu.ru/manual/ppa, куда Вы заливаете исходник, а он отдает готовый пакет.

Ответ 2



Для Windows есть утилита winqtdeployment, которая может сложить все явные зависимости в папку с вашей программой. http://doc.qt.io/qt-5/windows-deployment.html

Ответ 3



Обычно в Linux принято не таскать с программой все необходимые библиотеки, а устанавливать их как зависимости. Но в последнее время появились системы сборки, которые позволяют это делать, например snap и flatpak. А еще должна быть возможность прилинковывать нужные библиотеки статически.

Ответ 4



Тебе нужно задеплоить приложение, для этих целий я использую утилиту cqtdeployer Установить можно из релизов github или из snapstore sudo snap install cqtdeployer Пользоваться можно следующим образом : cqtdeployer -bin myApp -qmake path/to/my/qmake -qmlDir path/to/my/qml/files/dir Запускать через sh скрипт Если будите использовать версию из snap то убедитесь что у вас есть все пермишены

Ответ 5



Делал статическую сборку в Windows. Плюс этого варианта - потом не надо каждый раз генерить инсталлятор с библиотеками, на выходе компилятора получаем работающий exe-шник. Для линукса - практически то же самое, можно один раз заморочиться, и потом компилировать портативную пользовательскую программу (если, конечно, не используются ещё другие специфические системные библиотеки)

Комментариев нет:

Отправить комментарий