Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Aleksey Chuk от Январь 13, 2006, 14:54



Название: Qt под Cygwin (Eclipse)
Отправлено: Aleksey Chuk от Январь 13, 2006, 14:54
Нужно поставить qt под cygwin. Пробовал ставить 3 разных версии Qt (qt-x11-free-3.3.5, qt-x11-opensource-src-4.0.1, qt-3.2.3) Все попытки закончились безуспешно. qt-3.2.3 скачивал с http://kde-cygwin.sourceforge.net/qt3/ Вроде бы она как раз заточена под cygwin. Но всё равно не получил желаемых результатов. Во всех 3-х версиях qt ошибки при сборке разные. Например в последней: при распаковки архива по инструкции в каталоге с qt нет ни makefile ни configure, а при запуске qmake вылетает ошибка что QMAKESPEC не задан и самой папки mkspecs нет. По идее он должен задаваться при конфигурировании (configure -platform cygwin-g++). Подскажите, пожалуйста, кто-нибудь ставил успешно qt на cygwin? Какую версию qt нужно ставить и каким образом?  Конечная цель: использовать Eclipse+(CDT+GDB+Qt) для написания прог на С/С++ под Linux, (вместо Linux стоит cygwin (поставить Linux нет возможности)) все успешно, кроме qt.


Название: Qt под Cygwin (Eclipse)
Отправлено: SLiDER от Январь 13, 2006, 17:24
Тут эта тема как-то обсуждалась, но решения, по моему, так и не было найдено. А что вам мешает использовать MinGW?


Название: Qt под Cygwin (Eclipse)
Отправлено: joktar от Январь 13, 2006, 17:29
Ставить надо одну из версий под X11,
В Cygwin Setup надо поставить XFree86(включая средства разработки).
platform cygwin-g++ - не имеется, его тебе придется самому делать.

Возможно проще взять qt-win-opensource и пользоватся ей?(либо поставить линукс на эмуляторе).
p.s.
Памяти на машине сколько?проц какой?


Название: Qt под Cygwin (Eclipse)
Отправлено: Aleksey Chuk от Январь 17, 2006, 12:08
Проц Duron 700Mhz, 256Mb. Вроде бы уже сам решил данную задачу. Если кому-то интересно, то нужно ставить qt с http://kde-cygwin.sourceforge.net/qt3/. После распаковки, скопировал папку mkspec из другого архива(qt-x11-free-3.3.5). В принципе вся она не нужна, только с теми платформами на которых мы собираемся   использовать qt. QMAKESPEC не задаем.

добавлено спустя 6 минут:

 Предложение с MinGW самому кажется заманчивым. Вроде бы при его использовании всё намного проще получается, но мне была поставлена конкретная задача qt + cygwin, поэтому исхожу из этого. Предложить использовать MinGW не имею возможности (по крайней мере в ближайшее время). Всем спасибо.


Название: Qt под Cygwin (Eclipse)
Отправлено: Aleksey Chuk от Февраль 03, 2006, 16:38
После установки qt на cygwin вроде бы все нормально. Т.е. qmake работает(генерит project и makefile). Но после запуска make выходит такая вот ошибка
Код:

$ make
g++  -o qt main.o   -L/usr/X11R6/lib -lXext -lX11
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find
 -lXext
collect2: ld returned 1 exit status
make: *** [qt] Error 1

1. По идее все правильно: -lXext раскрывается до libXext.so. если я правильно понимаю, но .so это linux-вая библиотека, и в cygwin-е ее и быть не должно. Но у него есть libXext.dll (а также libX11.dll и др.) которые он должен использовать. Каким образом их можно подключить.
2. Если из makefile убрать -lXext -lX11, то всё заканчивается следующими ошибками
Код:

$ make
g++  -o qt main.o   -L/usr/X11R6/lib
main.o:main.cpp:(.text+0x81): undefined reference to `QApplication::QApplication(int&, char**)'
main.o:main.cpp:(.text+0x9b): undefined reference to `QString::QString(char const*)'
main.o:main.cpp:(.text+0xe4): undefined reference to `QLabel::QLabel(QString const&, QWidget*,
 char const*, unsigned int)'
main.o:main.cpp:(.text+0x102): undefined reference to `QString::shared_null'
main.o:main.cpp:(.text+0x117): undefined reference to `QStringData::deleteSelf()'
main.o:main.cpp:(.text+0x137): undefined reference to `QApplication::setMainWidget(QWidget*)'
main.o:main.cpp:(.text+0x153): undefined reference to `QApplication::exec()'
main.o:main.cpp:(.text+0x16f): undefined reference to `QApplication::~QApplication()'
main.o:main.cpp:(.text+0x1be): undefined reference to `QApplication::~QApplication()'
main.o:main.cpp:(.text+0x208): undefined reference to `QString::shared_null'
main.o:main.cpp:(.text+0x21a): undefined reference to `QStringData::deleteSelf()'
main.o:main.cpp:(.rdata$_ZTV6QGList[vtable for QGList]+0xc): undefined reference to `QGList::clear()'
main.o:main.cpp:(.rdata$_ZTV6QGList[vtable for QGList]+0x10): undefined reference to `QGList::~QGList()'
main.o:main.cpp:(.rdata$_ZTV6QGList[vtable for QGList]+0x14): undefined reference to `QGList::~QGList()'
main.o:main.cpp:(.rdata$_ZTV6QGList[vtable for QGList]+0x18): undefined reference to
 `QPtrCollection::newItem(void*)
main.o:main.cpp:(.rdata$_ZTV6QGList[vtable for QGList]+0x20): undefined reference to
 `QGList::compareItems(void*, void*)'
main.o:main.cpp:(.rdata$_ZTV6QGList[vtable for QGList]+0x24): undefined reference to
 `QGList::read(QDataStream&, void*&)'
main.o:main.cpp:(.rdata$_ZTV6QGList[vtable for QGList]+0x28): undefined reference to
 `QGList::write(QDataStream&, void*) const'
collect2: ld returned 1 exit status
make: *** [qt] Error 1

В чем имеено здесь проблема? Ругается что нету как раз этих библиотек(libXext, libX11...) или дело в чем то другом (например не та версия, или может требует заменить пользователя :) ...)? Еще ему нужны библиотеки qt (типа libqt, libqt-mt но есть только cygqt-mt.dll)ю
У кого есть хоть какие-то мысли и предположения- напишите. И кто-нибудь работал с qt под cygwin-ом? Заранее благодарю!!!


Название: Qt под Cygwin (Eclipse)
Отправлено: Aleksey Chuk от Февраль 06, 2006, 15:40
Уже Сам разобрался с данной проблемой. Если кого-то заинтересует ? отвечу.


Название: Qt под Cygwin (Eclipse)
Отправлено: Rainbow от Февраль 06, 2006, 18:55
Желательно написать прям здесь.


Название: Qt под Cygwin (Eclipse)
Отправлено: Aleksey Chuk от Февраль 08, 2006, 18:11
Как я уже писал, удалось поставить только qt3.2.3 c http://kde-cygwin.sourceforge.net/qt3/ Там есть исходники, а есть уже готовые бинарники. Бинарники просто распаковываются по нужным директориям и уже можно использовать qt. Значит designer, qmake и т.д. работают. Правда сгенерированые qmake-ом Makefile-ы практически всегда нужно подправлять, то он забудет -lqt добавить, то пути поиска. Кстати в qt нет библиотеки libqt.a или libqt-mt.a, есть cygqt-mt-3.dll (лежит в bin), а на нее символическая ссылка. Только вот самое главное, когда пытаешь собрать свою прогу, запускаешь make- он пишет ошибки типа ... undefined reference to ... Насколько я понял это проблема как раз с cygqt-mt-3.dll, что-то ему в ней не нравиться.  Пришлось собирать самому из исходников. Установки по их инсткукции прошла успешно, НО!!! Здесь всё наоборот, не работает ни designer ни assistant... но фурычит qmake, и прога из Makefile собирается. Но не все они потом запускаются, здесь выскакивает windows-кая ошибка типа: "The application failed to initialize properly 0xc0000005)..." Про нее написано на http://kde-cygwin.sourceforge.net/kde3/faq.php#0xc000005 (т.е. на том же сайте). Исправить ее можно, и тогда и designer и проги запускаться будут. С прогами проще, нужно скачать скрипт (на сайте есть ссылка), а потом добавлять в Makefile-ах одну строку. Но чтобы исправить designer и остальное, нужно их полностью пересобирать (уже с использованием скрипта). Эта проблема насколько я понял только в старых версиях, до 3.3.3. В новых должно быть исправлено.