Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Biowolf от Январь 23, 2014, 03:46



Название: Компиляция и сборка
Отправлено: Biowolf от Январь 23, 2014, 03:46
Имею некоторый опыт в майкрософтской визуал студии. Решил попробовать Qt, восновном ради того что бы получить программу работающую и из-под линукса.
Написал простенькую програмку на Qt. Скомпилировал. Из самого Qt она работала успешно. Но когда я пытаюсь запустить .exe файл из проводника возникает ошибка - не найдено libgcc_s_dw2-1.dll
Как получить работающий .exe ? Желательно без лишних .dll

Как получить компилированый файл для Линукса? Где обещанная кроссплатформенность?
Подскажите пожалуйста!


Название: Re: Компиляция и сборка
Отправлено: carrygun от Январь 23, 2014, 04:21
Как получить работающий .exe ? Желательно без лишних .dll
Он уже рабочий. Насчет "лишних" библиотек - ищите  читаете про статическую сборку Qt.

Как получить компилированый файл для Линукса? Где обещанная кроссплатформенность?
Собрать свои исходники в линупсе, либо прочитать про кросскомпиляцию. Кроссплатформенность в Qt предполагает компилируемость кода в поддерживаемых ОС. Если вам надо что-то работающее везде и всегда, то подойдет Java.


Название: Re: Компиляция и сборка
Отправлено: Biowolf от Январь 23, 2014, 22:01
В мелкософтской студии получался .exe весом 10 Кб и всё.
В Qt запускаемый файл получается в 3 раза больше и ещё надо приложить 3 Мб каких-то библиотек, чтобы оно вообще запускалось.
Почему так сложно?

Насчёт кроссплатформенности я ожидал что можно будет нажать кнопку компилировать и у меня сразу появятся программы под популярные оси, разложенные по разным папочкам. Но оказывается и тут сложности непомерные!
Почему так сложно?


Название: Re: Компиляция и сборка
Отправлено: kambala от Январь 23, 2014, 22:33
1. цена легкой кросс-платформенности
2. дело в чистом нативном коде. одна ОС (равно как и отдельно взятый компилятор) сама по себе ничего не знает о других ОС. хочешь собирать бинарники для разных ОС из одной — ставь кросс-компилятор. иначе иди на Java.


Название: Re: Компиляция и сборка
Отправлено: LisandreL от Январь 23, 2014, 22:37
В мелкософтской студии получался .exe весом 10 Кб и всё.
Ага, попробуйте его запустить на компьютере, где не стоит студия или Visual C++ Redistributable Package.
Но в целом, да, в Qt размер дистрибутива простенькой программы получается большим (если позаморачиваться со статической сборкой, отключением ненужного функционала, upx'ом пройтись и т.п.) или просто неприлично огромным (если этого не делать).

Почему так сложно?
Потому что жизнь - боль.  >:(


Название: Re: Компиляция и сборка
Отправлено: Alex Custov от Январь 23, 2014, 22:41
Насчёт кроссплатформенности я ожидал что можно будет нажать кнопку компилировать и у меня сразу появятся программы под популярные оси, разложенные по разным папочкам. Но оказывается и тут сложности непомерные!
Почему так сложно?

Вон из профессии! Ожидал он.


Название: Re: Компиляция и сборка
Отправлено: LisandreL от Январь 23, 2014, 22:53
Если вам надо что-то работающее везде и всегда, то подойдет Java.
хочешь собирать бинарники для разных ОС из одной — ставь кросс-компилятор. иначе иди на Java.
Не знаю, может мне очень не везло на разработчиков, но те гуёвые Java-программы с которыми я сталкивался оставили у меня привкус жутко бесящей тормознутости (ну и сильно ненативный вид я тоже отношу к минусам).


Название: Re: Компиляция и сборка
Отправлено: kambala от Январь 23, 2014, 23:24
а никто и не говорил, что джава — оптимальный вариант :) легка в развертывании/запуске на любой платформе, да (ТС хочет именно этого насколько я понял), но у нее есть и ряд своих минусов. для Qt-программы достаточно подложить несколько длл и всё будет работать (если сборка нестатическая), с джавой же так не получится.


Название: Re: Компиляция и сборка
Отправлено: carrygun от Январь 24, 2014, 04:36
В жабе проблемы с гуем еще те, но я чаще всего встречал другие решения. Хотя был один суровый гуй на OpenGL в яве, медленно, но работало ведь!


Название: Re: Компиляция и сборка
Отправлено: Alexu007 от Январь 24, 2014, 08:56
Мне тож сперва как то не понравилось дополнительные DLL, и получается размер больше, чем даже в том же билдере было. Но!. Ексешники Qt как минимум вдвое быстрее билдера работают (что очень приятно удивило). А дополнительные DLL ваще фигня, я их сразу в папку скопировал, и все свои Qt-шные ексешники туда сую.

Если захочешь свою гениальную EXE кому-нить впаритьподарить - давай её сразу в папке с библиотеками (их всего три). И никаких проблем.

В наш век терабайтов и терагерц стоит ли париться из-за лишних трёх файликов и десятка мегабайт?


Название: Re: Компиляция и сборка
Отправлено: kambala от Январь 24, 2014, 12:34
давай её сразу в папке с библиотеками (их всего три)
шутник :D количество длл зависит от количества используемых модулей Qt в программе.


Название: Re: Компиляция и сборка
Отправлено: carrygun от Январь 24, 2014, 12:42
давай её сразу в папке с библиотеками (их всего три)
шутник :D количество длл зависит от количества используемых модулей Qt в программе.
А то и больше. К примеру если захотеть послушать mp3, то помимо Qt5Multimedia программе трубется Qt5MultimediaWidgets, который тянет за собой Qt5OpenGL  :)


Название: Re: Компиляция и сборка
Отправлено: NickSin от Январь 27, 2014, 11:08
давай её сразу в папке с библиотеками (их всего три)
шутник :D количество длл зависит от количества используемых модулей Qt в программе.
А то и больше. К примеру если захотеть послушать mp3, то помимо Qt5Multimedia программе трубется Qt5MultimediaWidgets, который тянет за собой Qt5OpenGL  :)

Жизнь - это правда боль)