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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Конечный результат разработки ПО на Qt  (Прочитано 8928 раз)
8Observer8
Гость
« : Февраль 17, 2014, 07:05 »

Привет!

У меня нет полного понимания того, что является конечным результатом разработки ПО.

Выражу своё мнение. По ходу повествования написаны вопросы.

1. Исполняемый файл со статической сборкой. Создаётся один исполняемый файл, который весит, как минимум ~20 МБайт (для GUI-приложения). Запускается без каких либо зависимостей (к примеру, от libstdc++-6.dll, libgcc_s_dw2-1.dll, Qt5Core.dll, Qt5Gui.dll). Гарантировано - на любой машине. Для того чтобы создать статический exe-файл, нужно перекомпилировать библиотеку Qt в статическую сборку (по умолчанию библиотека динамическая). Далее из Qt Creator'а можно будет выбирать, как собрать разрабатываемое приложение: статически или динамически

Я знаком, только с ОС Windows, поэтому вопросы:

- Какое расширение у исполняемых файлов на Linux? В Linux все динамические библиотеки с расширением ".a"? Так?

- Какое расширение у исполняемых файлов на Mac OS? Какое расширение у динамических библиотек в Mac OS?

Как я понимаю, для Windows, Linux и Mac OS можно писать программы, которые достаточно перекомпилировать на соответствующей платформе, не меняя при этом код. Перекомпилировать этот код написанный для компьютера (для трёх ОС) под Android (и другие поддерживаемые мобильные платформы) мы не можем. Между мобильными платформами то же существует переносимость (с перекомпиляцией)? Какие мобильные платформы поддерживает Qt 5.2.0?

2. Исполняемый файл с динамической сборкой. Чтобы запустить приложение на другой машине, рядом с exe должны быть библиотеки, например, для GUI-приложения: libstdc++-6.dll, libgcc_s_dw2-1.dll, Qt5Core.dll, Qt5Gui.dll и т.д.

3. Классы. В этом случае продуктом разработчика будут: классы, документация (сгеренированная с помощью doxygen, в которой также есть диаграммы классов), тесты для методов-членов классов (тесты подтверждают требуемую функциональность классов)

4. Динамическая библиотека. Пока не знаю, как создавать динамическую библиотеку и обеспечить повторное использование её.

5. Статическая библиотека. Пока не знаю, как создавать статическую библиотеку и обеспечить повторное использование её.

6. Мастер установки (инсталятор). Скопирует все необходимые динамические (статические?) библиотеки в указанное пользователем место.

Что здесь неверно? Что пропустил? Как ещё может оформить разработчик результаты своего труда? Расскажите о своём опыте представления конечного результата своего труда пользователю (заказчику).

По мере познания и появления вопросов - буду здесь отписываться.

Заранее спасибо за ответы!
Записан
Serr500
Гость
« Ответ #1 : Февраль 17, 2014, 08:39 »

Цитировать
Какое расширение у исполняемых файлов на Linux?
Вы не поверите - любое, в том числе его может не быть вообще.  Подмигивающий В Linux "исполняемость" файла определяется атрибутом "x". При этом для одних пользователей он может быть исполняемым, а для других - нет.  Смеющийся

Цитировать
В Linux все динамические библиотеки с расширением ".a"?
Нет. Почти всегда ".so" или ".so" с версией (.so[.N[.N[.N]]], N - число). ".a" - это то же, что и .lib в Windows. Кстати, MinGW в Windows использует именно ".a" вместо ".lib".

Цитировать
У меня нет полного понимания того, что является конечным результатом разработки ПО.
Ответ на этот вопрос однозначен: то, что написано в техзадании!
Записан
8Observer8
Гость
« Ответ #2 : Февраль 17, 2014, 10:40 »

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

Спасибо большое за ответ! Какие по ТЗ могут быть варианты? Я их все перечислил?

Я разобрался, как создавать и использовать dll в Qt. Написал пошаговую инструкцию, для таких же новичков, как и я: http://www.prog.org.ru/topic_26558_0.html
« Последнее редактирование: Февраль 17, 2014, 14:49 от 8Observer8 » Записан
Serr500
Гость
« Ответ #3 : Февраль 17, 2014, 16:11 »

Какие по ТЗ могут быть варианты? Я их все перечислил?
Все варианты перечислить невозможно. Они зависят исключительно от идиотизма желаний заказчика. В целом, вроде бы, основные есть.
Записан
8Observer8
Гость
« Ответ #4 : Февраль 17, 2014, 16:18 »

В целом, вроде бы, основные есть.

Хорошо. Спасибо Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Февраль 17, 2014, 17:11 »

- Какое расширение у исполняемых файлов на Mac OS? Какое расширение у динамических библиотек в Mac OS?
dylib для библиотек. У самих исполняемых - обычно никакого. Вообще еще до расширения OSX опознает файл по типу ('APPL' для приложения). Но как правило приложение идет в виде bundle (расширение .app) - одна иконка, юзверь давит на нее - запуск. На самом деле это фолдер, внутри сидит сам "exe'шник" что очень удобно для всех
Записан
8Observer8
Гость
« Ответ #6 : Февраль 17, 2014, 18:25 »

Igors, спасибо большое Улыбающийся
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #7 : Февраль 17, 2014, 19:46 »

1. Исполняемый файл со статической сборкой. Создаётся один исполняемый файл, который весит, как минимум ~20 МБайт (для GUI-приложения). Запускается без каких либо зависимостей (к примеру, от libstdc++-6.dll, libgcc_s_dw2-1.dll, Qt5Core.dll, Qt5Gui.dll).
Статическую сборку не считаю необходимой. И не вижу трудностей в зависимостях.
В статической сборке вижу один огромный, на мой взгляд, минус - отсутствие системы плагинов.

В Linux|Windows можно собирать пакеты rpm|deb|msi|exe для установки на конечных компьютерах|устройствах с полным отсутствием зависимостей (в одном пакете все необходимые библиотеки)

Вот пример таких изысканий для Windows
Записан

8Observer8
Гость
« Ответ #8 : Февраль 18, 2014, 15:19 »

Статическую сборку не считаю необходимой. И не вижу трудностей в зависимостях.

Она необходима, если я хочу делиться с пользователями своими программками без установки. Как на этом сайте (сколько скачивал, всегда одним exe, может так выпадало): http://qt-apps.org/

Определить какие же dll нужны - для меня это сложно. Нет уверенности, что ещё что-то не понадобится на машине пользователя.

Например, чтобы запустить диалоговое приложение, мне понадобились вот эти dll (определял методом тыка):
icudt51.dll
icuin51.dll
icuuc51.dll
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

Если пакет делать, то как на 100% быть уверенным, что учёл все dll?

на мой взгляд, минус - отсутствие системы плагинов.
Поясните, пожалуйста, в друх словах, что такое плагины в Qt? Где они применяются?
« Последнее редактирование: Февраль 18, 2014, 20:54 от 8Observer8 » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Февраль 18, 2014, 15:37 »

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

1) Есть плагины которые тоже хотят юзать Qt. Очень смутно представляю себе КАК если само приложение собрано статически с модулями Qt? Или такая возможность есть?

2) Приложение собрано динамически, но все dll лежат в определенном месте. Напр (для простоты) Qt dll в папке с exe-шником, а вот плагины - в другой. Как натравить плагины без "костылей" типа "setpath"?

Спасибо
Записан
Bepec
Гость
« Ответ #10 : Февраль 18, 2014, 15:58 »

1) никак скорее всего. Динамика будет искать же их в папке Улыбающийся
2) есть файлик qt.conf. Он позволяет изменять пути Улыбающийся
https://qt-project.org/doc/qt-5.0/qtdoc/qt-conf.html
Записан
Vamireh
Гость
« Ответ #11 : Март 04, 2014, 15:41 »

Извиняюсь за некропост.

Код:
Если пакет делать, то как на 100% быть уверенным, что учёл все dll?

Лично у меня есть в VirtualBox голая XP, если там запускается, то считаю, что учел все.
Записан
8Observer8
Гость
« Ответ #12 : Март 04, 2014, 15:43 »

Лично у меня есть в VirtualBox голая XP, если там запускается, то считаю, что учел все.

Спасибо большое! Тоже так буду делать Улыбающийся
Записан
OKTA
Гость
« Ответ #13 : Март 04, 2014, 16:26 »

А еще есть Dependency Walker - помогает с либами.
Записан
8Observer8
Гость
« Ответ #14 : Март 04, 2014, 16:33 »

А еще есть Dependency Walker - помогает с либами.

Большое спасибо! Я её давно пробовал. Помню она не всё определяла. Может я ошибаюсь. Надо ещё попробовать Улыбающийся
« Последнее редактирование: Март 04, 2014, 16:35 от 8Observer8 » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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