Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [qt] независимый экзешник 
:(
    Опции темы
gordmiand
Дата 29.4.2010, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



подскажите пож-та как можно скомпилировать проект, чтобы чисто один его экзешник (или весь проект) работал бы на компе (под линуксом), где вообще нет Qt...
PM MAIL   Вверх
borisbn
Дата 29.4.2010, 22:39 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Точно не помню, но по-моему в лицензии на Open Source Qt сказано, что обязательно распространять свой exe-шник вместе с библиотеками Qt

Это сообщение отредактировал(а) borisbn - 29.4.2010, 22:40


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
gordmiand
Дата 29.4.2010, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



жаль, что точно не помните - очень надо....
а с какими именно "....с библиотеками Qt"?
PM MAIL   Вверх
borisbn
Дата 30.4.2010, 06:17 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



В windows'е с DLL-ками. Например, если используешь gui, нужно распространять QtCore4.dll и QtGui4.dll. Посмотри лицензию на их сайте


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Любитель
Дата 30.4.2010, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Ну это ж уже обсуждалось ни раз..

Если не распространять исходники, то надо обеспечить возможность юзерам собрать ваше приложение с другой версии Qt (грубо говоря). Т. е., если подходить формально - достаточно распространения объектных файлов.

А для собирания одного мегафайла - надо пользоваться статической линковокй. Для этого надо вначале собрать статические либы Qt. Информация есть в доках.

PS Может есть активисты, чтобы сделать инструкцию по использованию статической линковки, strip-а и "лицензионными" отличиями?


--------------------
PM MAIL ICQ Skype   Вверх
Deex42Iv
Дата 30.4.2010, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Trust No One



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.8.2009
Где: Казань

Репутация: нет
Всего: нет



Цитата(Любитель @  30.4.2010,  17:39 Найти цитируемый пост)
Может есть активисты, чтобы сделать инструкцию по использованию статической линковки, strip-а и "лицензионными" отличиями

да, было бы неплохо
PM MAIL WWW Skype Jabber   Вверх
gordmiand
Дата 30.4.2010, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Любитель: а в каких именно "доках"? дайте ссылочку пож-та....
PM MAIL   Вверх
KL7
Дата 1.5.2010, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.12.2008
Где: Minsk City

Репутация: 2
Всего: 2



Например, вот это - Building static Qt on Windows. Или вот это.


PM MAIL ICQ   Вверх
gordmiand
Дата 1.5.2010, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



да, но это под винды, а мне бы под линукс надо... 
хотя может и не стои заморачиваться - значит достаточно распространения вместе с экзешником объектных файлов проекта, чтобы он работал на компе без Qt? 

Это сообщение отредактировал(а) gordmiand - 1.5.2010, 18:50
PM MAIL   Вверх
KL7
Дата 1.5.2010, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.12.2008
Где: Minsk City

Репутация: 2
Всего: 2



Вы уж определитесь: Вам под линукс или все-таки exe-шники   smile 
А вообще динамически слинкованному exe-шнику как правило нужны QtCore4.dll, QtGui4.dll, mingwm10.dll и (для Qt 4.6) libgcc_s_dw2-1.dll.

Вот наверно то, что Вам надо - Builing static Qt on Linux. Но там для старенького Qt. 
PM MAIL ICQ   Вверх
gordmiand
Дата 1.5.2010, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



KL7: имелся ввиду пусковой файл программы в линуксе - то есть тот же экзешник программы...
по Вашей ссылке - там все заморочено...уж лучше буду таскать с исполняемым файлом проги набор дополнительных файлов, чем курочить кути...
PM MAIL   Вверх
KL7
Дата 2.5.2010, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.12.2008
Где: Minsk City

Репутация: 2
Всего: 2



Цитата(gordmiand @  1.5.2010,  23:45 Найти цитируемый пост)
имелся ввиду пусковой файл программы в линуксе - то есть тот же экзешник программы...

Ясно. Просто никогда не видел, чтобы bin-ы exe-шниками называли  smile 
PM MAIL ICQ   Вверх
gordmiand
Дата 2.5.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



KL7 : ну извините - я на линукс токо перехожу, а так все еще мыслю категориями и понятиями виндов...
так все-таки - для корректной работы приложения на компе без Qt достаточно иметь в проекте его объектные *.o -файлы? 
PM MAIL   Вверх
KL7
Дата 2.5.2010, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.12.2008
Где: Minsk City

Репутация: 2
Всего: 2



Цитата(gordmiand @  2.5.2010,  20:03 Найти цитируемый пост)
так все-таки - для корректной работы приложения на компе без Qt достаточно иметь в проекте его объектные *.o -файлы?  

Нет. 
Для работы qt-приложения под виндой нужно иметь QtCore4.dll, QtGui4.dll, mingwm10.dll и (для Qt 4.6) libgcc_s_dw2-1.dll. Первые две можно найти в папке qt\bin, вторые две - в mingw\bin. 
Как обстоят дела в прочих ОС - не в курсе.

А объектные файлы тут упоминали по поводу лицензионного соглашения. Я не знаток в этой области, но сейчас бесплатная Qt доступна с GNU LGPL лицензией и согласно ей
Цитата

Должна существовать возможность связывания разрабатываемого ПО с новейшей версией программы или библиотеки, охваченной LGPL. Наиболее часто используемый способ сделать так — это использовать «подходящий механизм разделяемых библиотек для связывания». Альтернативой этому является разрешение для статической библиотеки, если предоставлены либо исходный код, либо приспособленные для связывания объектные файлы.


Вобщем если Вы серьезно решите нести свой проект в массы, то должны выдать обществу не только толстый exe-шник со статически слинкованными библиотеками, но и исходники или объектные файлы, чтобы народ потом смог пересобрать Ваше приложение, если у них возникнет такое желание.

А для запуска на машине без qt Ваши *.o файлы никак не помогут. Нужны именно qt-шные библиотеки.

Только проблема в том, что QtCore4.dll + QtGui4.dll - это около 12 метров. Т.е. Ваш дистрибутив (программа + библиотеки) будет весит 12+ метров. Даже если там тренировочный 'hello world'.
А статически слинкованный exe, упакованный upx-ом, у меня получается около 2-3 метров. Мне, конечно, стыдно за вероятное нарушение лицензии, но лабы преподам я сдаю именно в таком варианте.

Это сообщение отредактировал(а) KL7 - 2.5.2010, 23:40
PM MAIL ICQ   Вверх
gordmiand
Дата 3.5.2010, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



KL7: ясно... то есть достаточно таскать с собой всего 4 файла - QtCore4.dll, QtGui4.dll, mingwm10.dll и (для Qt 4.6) libgcc_s_dw2-1.dll? а то со статической линковкой Qt под линукс как-то совсем сложно....

может кто знает доходчивые ссылки для такой линковки для Qt 4.6???
PM MAIL   Вверх
kamre
Дата 4.5.2010, 06:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 2
Всего: 13



Цитата(KL7 @ 2.5.2010,  23:36)
Мне, конечно, стыдно за вероятное нарушение лицензии, но лабы преподам я сдаю именно в таком варианте.

А откуда здесь нарушение лицензии? smile Исходники нужно прилагать только по требованию в таком случае. Или "преподы" их требуют, а вы не показываете? )
PM MAIL   Вверх
Любитель
Дата 4.5.2010, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(gordmiand @  3.5.2010,  19:24 Найти цитируемый пост)
может кто знает доходчивые ссылки для такой линковки для Qt 4.6??? 

Чем официальные доки не устраивают? http://doc.trolltech.com/4.6/deployment-x1...#static-linking


--------------------
PM MAIL ICQ Skype   Вверх
KL7
Дата 4.5.2010, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.12.2008
Где: Minsk City

Репутация: 2
Всего: 2



Цитата

А откуда здесь нарушение лицензии? smile Исходники нужно прилагать только по требованию в таком случае. Или "преподы" их требуют, а вы не показываете? )

Ясно. Значит нарушений никаких нет - преподаватели мало интересуются qt, а поэтому и исходниками визуализаций.

Цитата

Чем официальные доки не устраивают?

Я так понял, gordmiand-а интересует, что нужно предоставить пользователю вместе с исполняемым файлом, чтобы запустить qt-приложение под линуксом не имея полностью установленной qt. Под виндой тянутся dll-ки, а что под линуксом?

Это сообщение отредактировал(а) KL7 - 4.5.2010, 11:21
PM MAIL ICQ   Вверх
Любитель
Дата 4.5.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(KL7 @  4.5.2010,  11:17 Найти цитируемый пост)
чтобы запустить qt-приложение под линуксом не имея полностью установленной qt.

Вариант №1 - линковать статически (если действительно нужна полная независимость, то это preferred way).
Вариант №2 - тащить libQt*.so в каталоге с исполняемым файлом и сделать скрипт, ставящий LD_LIBRARY_PATH и затем запускающий приложение.



--------------------
PM MAIL ICQ Skype   Вверх
gordmiand
Дата 4.5.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Любитель: спасибо за ссылку - попробую по ней действовать - отпишусь....
пока пробовал действовать по приведенным выше ссылкам на статическую линковку qt в линуксе - одни проблемы - после долгих инсталляций-мучений в ппрофилях креатора почему-то появляется профиль для кутей версии 4.3 (хотя у меня 4.6.), старый профиль для 4.6. уже становится некорректен и все виджеты начинают плыть - их размеры и др., куда-то "пропадают" для компилятора некоторые виджеты, которые прекрасно виделись им при динамически собранном qt...
PM MAIL   Вверх
gordmiand
Дата 4.5.2010, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Любитель: делал по Вашей ссылке:

1. Выполняю (под рутом)
Код

cd /path/to/qt 
./configure -static -prefix /path/to/qt 


в ответ выбрал опцию „o“ - чтобы „to use the Open Source Edition“
выбрал 'yes' - „to accept this license offer“
много чего „считается“...заканчивается вроде без ошибок предложением

Qt is now configured for building. Just run 'gmake'.
Once everything is built, you must run 'gmake install'.
Qt will be installed into /usr/local/Trolltech/Qt-4.6.1

я его не выполняю....
    
2. Выполняю команду 
Код

make sub-src

много чего „считается“...

заканчивается ошибкой 
Код

../../include/QtGui/private/../../../src/gui/styles/qgtkstyle_p.h:276: error: ‘gtkStyle’ was not declared in this scope
gmake[1]:  [.obj/release-static/qguiplatformplugin.o] Error 1
gmake[1]: Leaving directory `/Qt/qt/src/gui'
gmake:  [sub-gui-install_subtargets-ordered] Error 2


3. затем захожу в папку приложения и из нее пытаюсь выполнить команду
Код

make clean

в ответ выдается сообщение 
Код

„ make: *** No rule to make target `/Qt/qt/mkspecs/linux-g++/qmake.conf', needed by `Makefile'.  Stop.“


+ ко всему вообще нет рабочего профиля - см. рисунок...
 команды
Код

make clean
 PATH=/path/to/Qt/bin:$PATH
 export PATH
 qmake -config release
 make

надо выполнять в консоли или где-то (?) прописывать?
дальше уже не пробовал...хотелось бы с п. 2, 3 сначала разобраться – в чем там дело и как все корректно "проинсталлировать"?



Это сообщение отредактировал(а) gordmiand - 4.5.2010, 19:27

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  profil.JPG 51,46 Kb
PM MAIL   Вверх
Любитель
Дата 4.5.2010, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



1. Я не знаю зачем там sub-src smile Делай просто make. Главное задать для ./configure ключи static и префикс указать (чтоб существующую Qt не убить).
2. Смотри ./configure -help - у тебя нету GTK-хидеров видать. Отключи QGTKStyle (там что-то типа -no-style gtk, я точно не помню).
3. Затем при сборке своего проекта вместо просто qmake, меняем PATH, а затем запускаем (соответственно будет использоваться нужный qmake).


--------------------
PM MAIL ICQ Skype   Вверх
gordmiand
Дата 4.5.2010, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



1. то есть в
Код

./configure -static -prefix /path/to/qt 

в качестве /path/to/qt  задается отдельный от основного Qt путь к установке статической версии кутей? мне в принципе 2 таких варианта кутей и не надо наверное - достаточно статической...я ее поверх старой (динамической версии) лепил...а как тогда можно будет переключаться с динамической на статическую и обратно версии работы Qt?
2. а куда данную "команду" 
Код
-no-style gtk
 вставлять ? в продолжение команды
 ./configure ???
3. пожалуйста поподробнее по поводу Вашего п.3: то есть вместо или в добавок к уже указанным qt-путям в переменной PATH дописать путь к динамической версии qmake (которая будет в отдельно от основных-динамических кутей папке)? 
а команды
Код

make clean
 PATH=/path/to/Qt/bin:$PATH
 export PATH
 qmake -config release
 make

вообще надо с консоли выполнять? (на первой из них у меня ошибка - см. ее выше...)

PM MAIL   Вверх
Любитель
Дата 6.5.2010, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(gordmiand @  4.5.2010,  22:03 Найти цитируемый пост)
 вставлять ? в продолжение команды

Да. Смотри help по configure (./configure -help) - там расписаны все опции.

Цитата(gordmiand @  4.5.2010,  22:03 Найти цитируемый пост)
а как тогда можно будет переключаться с динамической на статическую и обратно версии работы Qt?

Всё очень просто - нужно использовать нужный qmake. Для этого при его запуске PATH и меняется.

Цитата(gordmiand @  4.5.2010,  22:03 Найти цитируемый пост)
то есть вместо или в добавок к уже указанным qt-путям в переменной PATH дописать путь к динамической версии qmake (которая будет в отдельно от основных-динамических кутей папке)? 

Ну перетереть весь PATH - очевидно неверно. Дописать вначале (и именно при запуске qmake для статика) - наиболее логично (пути из PATH всегда просматриваются по порядку).

Цитата(gordmiand @  4.5.2010,  22:03 Найти цитируемый пост)
вообще надо с консоли выполнять

Ну.. в общем да. Можно сделать скриптик маленький, который это всё будет делать - для удобства.

Цитата(gordmiand @  4.5.2010,  22:03 Найти цитируемый пост)
(на первой из них у меня ошибка - см. ее выше...)

make clean нужен в том случае, если проект уже собирался с обычной qt - чтобы удалить всякий "мусор".

И да - само собой последнии строки (по крайней мере qmake/make) выполняются в каталоге с .pro файлом проекта.


--------------------
PM MAIL ICQ Skype   Вверх
gordmiand
Дата 6.5.2010, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



на другом компутере - при выполнении команды ./configure -static -prefix.... в какой-то момент возникает ошибка "You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /Qt_4.6./qt/mkspecs/linux-g++." - в чем тут дело и как поправить??? 
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1183 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.