![]() |
|
![]() ![]() ![]() |
|
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
подскажите пож-та как можно скомпилировать проект, чтобы чисто один его экзешник (или весь проект) работал бы на компе (под линуксом), где вообще нет Qt...
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Точно не помню, но по-моему в лицензии на Open Source Qt сказано, что обязательно распространять свой exe-шник вместе с библиотеками Qt
Это сообщение отредактировал(а) borisbn - 29.4.2010, 22:40 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
жаль, что точно не помните - очень надо....
а с какими именно "....с библиотеками Qt"? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
В windows'е с DLL-ками. Например, если используешь gui, нужно распространять QtCore4.dll и QtGui4.dll. Посмотри лицензию на их сайте
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Ну это ж уже обсуждалось ни раз..
Если не распространять исходники, то надо обеспечить возможность юзерам собрать ваше приложение с другой версии Qt (грубо говоря). Т. е., если подходить формально - достаточно распространения объектных файлов. А для собирания одного мегафайла - надо пользоваться статической линковокй. Для этого надо вначале собрать статические либы Qt. Информация есть в доках. PS Может есть активисты, чтобы сделать инструкцию по использованию статической линковки, strip-а и "лицензионными" отличиями? |
|||
|
||||
Deex42Iv |
|
|||
![]() Trust No One Профиль Группа: Участник Сообщений: 24 Регистрация: 25.8.2009 Где: Казань Репутация: нет Всего: нет |
||||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Любитель: а в каких именно "доках"? дайте ссылочку пож-та....
|
|||
|
||||
KL7 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
||||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
да, но это под винды, а мне бы под линукс надо...
хотя может и не стои заморачиваться - значит достаточно распространения вместе с экзешником объектных файлов проекта, чтобы он работал на компе без Qt? Это сообщение отредактировал(а) gordmiand - 1.5.2010, 18:50 |
|||
|
||||
KL7 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
Вы уж определитесь: Вам под линукс или все-таки exe-шники
![]() А вообще динамически слинкованному exe-шнику как правило нужны QtCore4.dll, QtGui4.dll, mingwm10.dll и (для Qt 4.6) libgcc_s_dw2-1.dll. Вот наверно то, что Вам надо - Builing static Qt on Linux. Но там для старенького Qt. |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
KL7: имелся ввиду пусковой файл программы в линуксе - то есть тот же экзешник программы...
по Вашей ссылке - там все заморочено...уж лучше буду таскать с исполняемым файлом проги набор дополнительных файлов, чем курочить кути... |
|||
|
||||
KL7 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
||||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
KL7 : ну извините - я на линукс токо перехожу, а так все еще мыслю категориями и понятиями виндов...
так все-таки - для корректной работы приложения на компе без Qt достаточно иметь в проекте его объектные *.o -файлы? |
|||
|
||||
KL7 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
Нет. Для работы qt-приложения под виндой нужно иметь QtCore4.dll, QtGui4.dll, mingwm10.dll и (для Qt 4.6) libgcc_s_dw2-1.dll. Первые две можно найти в папке qt\bin, вторые две - в mingw\bin. Как обстоят дела в прочих ОС - не в курсе. А объектные файлы тут упоминали по поводу лицензионного соглашения. Я не знаток в этой области, но сейчас бесплатная Qt доступна с GNU LGPL лицензией и согласно ей
Вобщем если Вы серьезно решите нести свой проект в массы, то должны выдать обществу не только толстый exe-шник со статически слинкованными библиотеками, но и исходники или объектные файлы, чтобы народ потом смог пересобрать Ваше приложение, если у них возникнет такое желание. А для запуска на машине без qt Ваши *.o файлы никак не помогут. Нужны именно qt-шные библиотеки. Только проблема в том, что QtCore4.dll + QtGui4.dll - это около 12 метров. Т.е. Ваш дистрибутив (программа + библиотеки) будет весит 12+ метров. Даже если там тренировочный 'hello world'. А статически слинкованный exe, упакованный upx-ом, у меня получается около 2-3 метров. Мне, конечно, стыдно за вероятное нарушение лицензии, но лабы преподам я сдаю именно в таком варианте. Это сообщение отредактировал(а) KL7 - 2.5.2010, 23:40 |
||||
|
|||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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??? |
|||
|
||||
kamre |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 2 Всего: 13 |
А откуда здесь нарушение лицензии? ![]() |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Чем официальные доки не устраивают? http://doc.trolltech.com/4.6/deployment-x1...#static-linking |
|||
|
||||
KL7 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
Ясно. Значит нарушений никаких нет - преподаватели мало интересуются qt, а поэтому и исходниками визуализаций.
Я так понял, gordmiand-а интересует, что нужно предоставить пользователю вместе с исполняемым файлом, чтобы запустить qt-приложение под линуксом не имея полностью установленной qt. Под виндой тянутся dll-ки, а что под линуксом? Это сообщение отредактировал(а) KL7 - 4.5.2010, 11:21 |
||||
|
|||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Вариант №1 - линковать статически (если действительно нужна полная независимость, то это preferred way). Вариант №2 - тащить libQt*.so в каталоге с исполняемым файлом и сделать скрипт, ставящий LD_LIBRARY_PATH и затем запускающий приложение. |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Любитель: спасибо за ссылку - попробую по ней действовать - отпишусь....
пока пробовал действовать по приведенным выше ссылкам на статическую линковку qt в линуксе - одни проблемы - после долгих инсталляций-мучений в ппрофилях креатора почему-то появляется профиль для кутей версии 4.3 (хотя у меня 4.6.), старый профиль для 4.6. уже становится некорректен и все виджеты начинают плыть - их размеры и др., куда-то "пропадают" для компилятора некоторые виджеты, которые прекрасно виделись им при динамически собранном qt... |
|||
|
||||
gordmiand |
|
||||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Любитель: делал по Вашей ссылке:
1. Выполняю (под рутом)
в ответ выбрал опцию „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. Выполняю команду
много чего „считается“... заканчивается ошибкой
3. затем захожу в папку приложения и из нее пытаюсь выполнить команду
в ответ выдается сообщение
+ ко всему вообще нет рабочего профиля - см. рисунок... команды
надо выполнять в консоли или где-то (?) прописывать? дальше уже не пробовал...хотелось бы с п. 2, 3 сначала разобраться – в чем там дело и как все корректно "проинсталлировать"? Это сообщение отредактировал(а) gordmiand - 4.5.2010, 19:27 Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
||||||||||||
|
|||||||||||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
1. Я не знаю зачем там sub-src
![]() 2. Смотри ./configure -help - у тебя нету GTK-хидеров видать. Отключи QGTKStyle (там что-то типа -no-style gtk, я точно не помню). 3. Затем при сборке своего проекта вместо просто qmake, меняем PATH, а затем запускаем (соответственно будет использоваться нужный qmake). |
|||
|
||||
gordmiand |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
1. то есть в
в качестве /path/to/qt задается отдельный от основного Qt путь к установке статической версии кутей? мне в принципе 2 таких варианта кутей и не надо наверное - достаточно статической...я ее поверх старой (динамической версии) лепил...а как тогда можно будет переключаться с динамической на статическую и обратно версии работы Qt? 2. а куда данную "команду"
./configure ??? 3. пожалуйста поподробнее по поводу Вашего п.3: то есть вместо или в добавок к уже указанным qt-путям в переменной PATH дописать путь к динамической версии qmake (которая будет в отдельно от основных-динамических кутей папке)? а команды
вообще надо с консоли выполнять? (на первой из них у меня ошибка - см. ее выше...) |
||||||
|
|||||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Да. Смотри help по configure (./configure -help) - там расписаны все опции.
Всё очень просто - нужно использовать нужный qmake. Для этого при его запуске PATH и меняется. Ну перетереть весь PATH - очевидно неверно. Дописать вначале (и именно при запуске qmake для статика) - наиболее логично (пути из PATH всегда просматриваются по порядку). Ну.. в общем да. Можно сделать скриптик маленький, который это всё будет делать - для удобства. make clean нужен в том случае, если проект уже собирался с обычной qt - чтобы удалить всякий "мусор". И да - само собой последнии строки (по крайней мере qmake/make) выполняются в каталоге с .pro файлом проекта. |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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++." - в чем тут дело и как поправить??? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |