Russian Qt Forum

Компиляторы и платформы => Компиляторы => Тема начата: Cyrax от Август 16, 2006, 20:59



Название: Ошибки при компиляции с помощью MinGW
Отправлено: Cyrax от Август 16, 2006, 20:59
Собираюсь писать большой проект под Qt. Поставил MinGW и Qt. Для проверки написал маленькую тестовую прогу. qmake'ом создал makefile. Затем собираю проект make'ом. На экран выводятся следующие сообщения об ошибках:

mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `D:/Qt_testing/test`
g++ -c -02 -02 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_D
LL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT   -DQT_NEEDS_QMAIN
  -I"C:/Qt/4.l.2/include/QtCore" -I"C:/Qt/4.1.2/include/QtGui" -I"C:/Qt/4.1.2/inc
lude" -I"." ?I"C:/Qt/4.l.2/include/ActiveQt" -I"release" -I"." -I"C:/Qt/4.1-2/mk
specs/win32-g++" -о release\test-o test-cpp
"C:\DOCUME~1\CYRAX" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
mingw32-make[l]: *** [release\test-о] Error 1
mingw32-make[1]: Leaving directory `D:/_Qt_testing/test`
mingw32-make: *** [release] Error 2

Вопрос в том, почему make лезет в "C:\DOCUME~1\CYRAX", когда у меня каталог называется "C:\DOCUME~1\CYRAX (ADMIN)"...

И вообще, в чём может быть проблема?

Дополнительные вопросы
1. Как мотать окно в Far'е?
2. Почему при установке Qt с помощью инсталлятора Qt-исходники компилятся быстро, а компиляция Qt-исходников MinGW'ином идёт довольно долго.


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Вудруф от Август 17, 2006, 06:02
Не должно быть пробелов, указывай сокращённое (DOS'овское) имя..

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

 Никак. Но можно расширить по Ctrl+F9, видно будет больше.
В инсталляторе находится часть бинарников, в сырцах, что логично, их нет :)


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Cyrax от Август 17, 2006, 22:24
Я изменил переменную среды TMP. Именно она и использовалась при сборке. Можно было изменить имя профиля... Кстати, будь слово "Documents" в имени каталога "Documents and Settings" короче хотя бы на один символ, то возникла бы та же ошибка...

Exe'шник я получил, но тут возник вопрос, где в makefil'е указывается переменная среды TMP. Ни в каких makefil'ах проекта я её не нашел. Или это сам make использует эту переменную?
Интересно, можно ли при сборке make'ом работать с глобальными переменными среды (системными перемнными), а не с переменными среды пользователя. Тогда ошибки бы не возникло...

Насчёт мотания в Far'е. Раз нельзя мотать, то как посмотреть параметры, например qmake'а? Перенапрвить вывод в файл? Слишком трудоёмко...

Теперь по поводу компиляции исходников Qt. Если в инсталляторе уже имеются некоторые готовые бинарники, то зачем там же (в комплекте) держать исходники для этих бинарников. Конечно, полные исходники нужны, но не лучше ли обойтись без бинарников, путём полной компиляции исходников. Времени это займёт, конечно, намного больше, но в случае с бинарниками компилится release-версия и если мне понадобится debug-версия, то придётся перекомпиливать все исходники заново - почти двойная работа. Или инсталлятор как-то можно заставить компилить debug-версию, чтоб не делать это потом самому? Но в этом случае всё равно придётся перекомпилить готовые release-бинарники.

Ещё такой вопрос. Чем отличаются MinGW'иновский make и Qt-шный configure? Мог бы я собрать Qt make'ом?

Не совсем понятна ситуация с tmake'ом. Везде пишут, что это скрипт на Perl'е, что для его использования нужен Perl. Но когда я ставил Qt2, то нашёл в одном из его каталогов (вместе с qmake) tmake.exe. Скрипт там тоже был, но откуда взялся exe'шник...

Напоследок, вопрос не по теме. Как в Win'де посмотреть, какие порты заняты и какими прогами. И как принудительно освободить порт.

PS: открыл тему по Qt, связанную с генерацией отчётов.


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Orlov_O от Август 18, 2006, 06:38
по поводу сборки и мотания ответов: пользоваться лучше cmd.exe с высотой буфера 1024 строки. всё видно ;) В ярлычке всё это устанавливается.


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Вудруф от Август 18, 2006, 07:00
Именно так я и делал: перенаправлял в Far'е, а потом по Ctrl + Tab переключался между консолью и созданным файлом.

Сборка Qt и происходит выполнением mingw32-make, а configure всего лишь из файлов проекта (.pro) создаёт необходимые makefile.


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Cyrax от Август 18, 2006, 21:40
Почему именно 1024? Ведь можно и больше (и меньше)...

Что касается cmd.exe, то тот же самый буфер можно установить и для Far'а. Но есть два НО. Во-первых, при запуске Far'а (когда вертикальный размер буфера превышает вертикальный размер экрана) вертикальный scrollbar устанавливается в нижнее положение, а в случае с cmd.exe - в верхнее. Во-вторых, не увидим одновременно и "шапку", и "подвал" Far'а.
Получается, есть два варианта: либо cmd.exe с расширенным экранным буфером, либо Far с перенапралением вывода в файл.

Спасибо всем за советы 8)


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Cyrax от Сентябрь 22, 2006, 20:16
Хочу выяснить вот что. При установке Qt (4.1.4) выводится следующее сообщение:
There is a problem with MinGW installation:
The installer could not find a valid C:\MinGW\include\w32api.h
(The supported version is 3.2)
Do you still want to continue? (Your installation may not work)

Заголовочный файл w32api.h там есть, версия - 3.6. Qt у меня 4.1.4 - последняя версия под винду, так почему его инсталлятор требует версию w32api.h не выше 3.2, почему не принимает 3.6 ?
Как и на чём может сказаться такая разница в версиях (Qt нормально ставится, несмотря на это предупреждение) ?
8)


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Вудруф от Сентябрь 25, 2006, 06:48
Я так понимаю, ты устанавливаешь бинарники? Тогда может отразиться на том, что версия Qt, скомпилированная со старым w32api.h, может стать несовместима с библиотекой mingw32.dll.
Поправьте, если не прав.


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Cyrax от Сентябрь 25, 2006, 21:36
Не понятно, почему самый последний Qt (4.1.4) требует старый w32api.h...


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Вудруф от Сентябрь 26, 2006, 06:54
Как вариант - они пользуются версией, которая у них была на момент выпуска 4.0.0 . Возможно, это связано с тем, что они заявляют о бинарной совместимости в рамках старшей версии, а с новой версией библиотеки она может потеряться.


Название: Ошибки при компиляции с помощью MinGW
Отправлено: C300G от Сентябрь 27, 2006, 11:24
Цитата: "Cyrax"
Как и на чём может сказаться такая разница в версиях (Qt нормально ставится, несмотря на это предупреждение) ?
8)

При установке - забил на это. До сих пор никак не сказалось.


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Cyrax от Сентябрь 30, 2006, 15:12
Теперь не могу получить debug'ный exe'шник (make debug или make all).
Ошибки в ответ на make all:                           8)

mingw32-make all
mingw32-make -f Makefile.Release all
mingw32-make[1]: Entering directory `C:/Documents and Settings/revdokim.TLM/workspace/test_3'
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/GPL/Qt/4.1.4/include/QtCore" -I"C:/GPL/Qt/4.1.4/include/QtGui" -I"C:/GPL/Qt/4.1.4/include" -I"." -I"C:/GPL/Qt/4.1.4/include/ActiveQt" -I"release" -I"." -I"..\..\..\..\GPL\Qt\4.1.4\mkspecs\win32-g++" -o release\test_3.o test_3.cpp
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -Wl,-subsystem,windows -o "release\test_3.exe" release\test_3.o  -L"c:\GPL\Qt\4.1.4\lib" -lmingw32 -lqtmain -lQtGui4 -lQtCore4
mingw32-make[1]: Leaving directory `C:/Documents and Settings/revdokim.TLM/workspace/test_3'
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Documents and Settings/revdokim.TLM/workspace/test_3'
g++ -c -g -g -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/GPL/Qt/4.1.4/include/QtCore" -I"C:/GPL/Qt/4.1.4/include/QtGui" -I"C:/GPL/Qt/4.1.4/include" -I"." -I"C:/GPL/Qt/4.1.4/include/ActiveQt" -I"debug" -I"." -I"..\..\..\..\GPL\Qt\4.1.4\mkspecs\win32-g++" -o debug\test_3.o test_3.cpp
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,windows -o "debug\test_3.exe" debug\test_3.o  -L"c:\GPL\Qt\4.1.4\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
C:\GPL\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lqtmaind
collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug\test_3.exe] Error 1
mingw32-make[1]: Leaving directory `C:/Documents and Settings/revdokim.TLM/workspace/test_3'
mingw32-make: *** [debug-all] Error 2

Что за -lqtmaind не может найти ld.exe ?


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Вудруф от Октябрь 02, 2006, 06:33
%QTDIR%/lib -> qtmaind.a
У тебя скомпилирована только релизная версия Qt?


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Cyrax от Октябрь 05, 2006, 21:36
Да, была релизная.
Теперь уж на гиг распух...


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Вудруф от Октябрь 06, 2006, 09:25
tmp удали...

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

 все tmp. У меня debug-and-release занимает 344 Мб. Examples только релизные.


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Cyrax от Октябрь 17, 2006, 17:51
Ты examples сразу под release собирал или потом debug'и удалил ?


Название: Ошибки при компиляции с помощью MinGW
Отправлено: Вудруф от Октябрь 18, 2006, 09:07
потом debug удалил :)