Порт с винды на линукс
От: BlackEric http://black-eric.lj.ru
Дата: 31.05.20 19:48
Оценка:
Есть приложение на qt работающее с бд и ip камерой. Сейчас собирается и запускается под виндовс.
Деплой происходит путем копирования exe и dll на машину.

Нужно его пересобрать под Linux. Как это правильно сделать? Достаточно будет просто пересобрать на целевой системе?
И как в этом случае распространять? Что делать если версия Qt будет отличаться от компа к компу? У нас сейчас 5.7

В общем как портировать Qt приложение с винды на линукс?
https://github.com/BlackEric001
Re: Порт с винды на линукс
От: Pzz Россия https://github.com/alexpevzner
Дата: 31.05.20 20:35
Оценка: 2 (1) +1
Здравствуйте, BlackEric, Вы писали:

BE>Нужно его пересобрать под Linux. Как это правильно сделать? Достаточно будет просто пересобрать на целевой системе?

BE>И как в этом случае распространять? Что делать если версия Qt будет отличаться от компа к компу? У нас сейчас 5.7

Ну если у тебя используется только Qt API, то есть хороший шанс, что достаточно будет просто пересобрать. Если же используется какая-то виндовая специфика (например, прямые обращения к Win32 API), или какие-то нестандартные особенности виндового компилятора, придется с этими местами разбираться.

Что до распостранения, я вижу три варианта:
1. Собирать пакеты отдельно для каждого целевого дистрибутива линуха
2. Таскать все нужные библиотеки с собой
3. Собрать и распостранять snap

Пользователям, конечно, больше понравится первый вариант. При условии, что их любимый дистрибутив войдет в список целевых.
Re: Порт с винды на линукс
От: Igore Россия  
Дата: 01.06.20 08:18
Оценка: 2 (1) +1
Здравствуйте, BlackEric, Вы писали:

BE>Есть приложение на qt работающее с бд и ip камерой. Сейчас собирается и запускается под виндовс.

BE>Деплой происходит путем копирования exe и dll на машину.
Под Linux такое сразу не заработает, там нет правила что dll(.so) начинают искаться с той папки откуда запускается exe.
Поэтому вопросы, под какой или что сложнее какие дистрибутивы будет порт.
Если порт1 или их мало, посмотри на создание deb,rpm пакета где в зависимостях можно будет прописать системную Qt, тогда это уже дело пользователя как поставить нужную версию.
Ну и задача разбивается на собрать с системным Qt, создать пакет

BE>Нужно его пересобрать под Linux. Как это правильно сделать? Достаточно будет просто пересобрать на целевой системе?

BE>И как в этом случае распространять? Что делать если версия Qt будет отличаться от компа к компу? У нас сейчас 5.7
Вариант номер 2, всё своё ношу с собой, для этого нужно будет собирать свой Qt на нужно дистрибутиве, прописывать откуда его грузить через LD_LIBRARY_PATH или RPATH, и тащить с собой в инсталяторе, следующая проблема, glibc(если уж совсем зоопарк дистрибутивов), тут я знаю только один вариант musl, раньше был еще lsb, но он вроде уже не развивается

BE>В общем как портировать Qt приложение с винды на линукс?

Если дистрибутив 1,2 то легко, самое простое, всё берешь с собой(или вообще системное), собираешь на целевой платформе и пакуешь в инсталятор, если очень много то либо много разных сборок либо эксперименты с musl, lsb. Ну или вообще распространять в исходниках, пусть каждый собирает по инструкции
Re[2]: Порт с винды на линукс
От: BlackEric http://black-eric.lj.ru
Дата: 01.06.20 10:05
Оценка:
Здравствуйте, Igore, Вы писали:

Установка тоже будет моей проблемой. И настройка термопринтера для печати.

Это внутреннее приложение. Если скажем я его соберу в QtCreator под той же версий линукса что и будет у заказчика, то что мне нужно сделать что бы оно потом стало на комп где есть KDE и следовательно Qt той же версии, но нет средств разработки?
И сейчас конфиги лежат в папке приложения рядом с exe. Как правильно в линуске (скорее всего Debian будет) сделать?
https://github.com/BlackEric001
Re[3]: Порт с винды на линукс
От: ioni Россия  
Дата: 01.06.20 10:19
Оценка: 1 (1)
Здравствуйте, BlackEric, Вы писали:

Да еще не забудьте (чисто теоретически) могут возникнуть проблемы с лицензионностью,
если вы собираетесь распространять свою программу
Re[3]: Порт с винды на линукс
От: Igore Россия  
Дата: 02.06.20 06:02
Оценка: 2 (1)
Здравствуйте, BlackEric, Вы писали:

BE>Установка тоже будет моей проблемой. И настройка термопринтера для печати.

BE>Это внутреннее приложение. Если скажем я его соберу в QtCreator под той же версий линукса что и будет у заказчика, то что мне нужно сделать что бы оно потом стало на комп где есть KDE и следовательно Qt той же версии, но нет средств разработки?
Попробуй просто перенести собранное приложение на другой компьютер и запустить
BE>И сейчас конфиги лежат в папке приложения рядом с exe. Как правильно в линуске (скорее всего Debian будет) сделать?
1) Собираешь локально релиз в QtCreator, используя системный Qt
2) Cоздаешь program.deb пакет
3) Переносишь на другой компьютер делаешь sudo dpkg -i program.deb, и всё, запускаешь программу на другом компьютере.

Вообще настройки в Linux обычно лежат отдельно от exe, но это тебе уже сама система скажет если от пользователя не сможет изменить файл настроек.
Re[3]: Порт с винды на линукс
От: Igore Россия  
Дата: 02.06.20 11:38
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>И сейчас конфиги лежат в папке приложения рядом с exe. Как правильно в линуске (скорее всего Debian будет) сделать?

Какие именно настройки? Пользовательские данные которые можешь менять в ui хранишь в auto path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation), не забудь добавить setApplicationName setOrganizationDomain при старте. Должно работать на всех системах. Это приблизительно, ключевые слова для поиска ответов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.