Russian Qt Forum
Ноябрь 25, 2024, 20:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Ошибки при компиляции с помощью MinGW  (Прочитано 23674 раз)
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'ином идёт довольно долго.
Записан
Вудруф
Гость
« Ответ #1 : Август 17, 2006, 06:02 »

Не должно быть пробелов, указывай сокращённое (DOS'овское) имя..

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

 Никак. Но можно расширить по Ctrl+F9, видно будет больше.
В инсталляторе находится часть бинарников, в сырцах, что логично, их нет Улыбающийся
Записан
Cyrax
Гость
« Ответ #2 : Август 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, связанную с генерацией отчётов.
Записан
Orlov_O
Гость
« Ответ #3 : Август 18, 2006, 06:38 »

по поводу сборки и мотания ответов: пользоваться лучше cmd.exe с высотой буфера 1024 строки. всё видно Подмигивающий В ярлычке всё это устанавливается.
Записан
Вудруф
Гость
« Ответ #4 : Август 18, 2006, 07:00 »

Именно так я и делал: перенаправлял в Far'е, а потом по Ctrl + Tab переключался между консолью и созданным файлом.

Сборка Qt и происходит выполнением mingw32-make, а configure всего лишь из файлов проекта (.pro) создаёт необходимые makefile.
Записан
Cyrax
Гость
« Ответ #5 : Август 18, 2006, 21:40 »

Почему именно 1024? Ведь можно и больше (и меньше)...

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

Спасибо всем за советы Крутой
Записан
Cyrax
Гость
« Ответ #6 : Сентябрь 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 нормально ставится, несмотря на это предупреждение) ?
Крутой
Записан
Вудруф
Гость
« Ответ #7 : Сентябрь 25, 2006, 06:48 »

Я так понимаю, ты устанавливаешь бинарники? Тогда может отразиться на том, что версия Qt, скомпилированная со старым w32api.h, может стать несовместима с библиотекой mingw32.dll.
Поправьте, если не прав.
Записан
Cyrax
Гость
« Ответ #8 : Сентябрь 25, 2006, 21:36 »

Не понятно, почему самый последний Qt (4.1.4) требует старый w32api.h...
Записан
Вудруф
Гость
« Ответ #9 : Сентябрь 26, 2006, 06:54 »

Как вариант - они пользуются версией, которая у них была на момент выпуска 4.0.0 . Возможно, это связано с тем, что они заявляют о бинарной совместимости в рамках старшей версии, а с новой версией библиотеки она может потеряться.
Записан
C300G
Гость
« Ответ #10 : Сентябрь 27, 2006, 11:24 »

Цитата: "Cyrax"
Как и на чём может сказаться такая разница в версиях (Qt нормально ставится, несмотря на это предупреждение) ?
Крутой

При установке - забил на это. До сих пор никак не сказалось.
Записан
Cyrax
Гость
« Ответ #11 : Сентябрь 30, 2006, 15:12 »

Теперь не могу получить debug'ный exe'шник (make debug или make all).
Ошибки в ответ на make all:                           Крутой

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 ?
Записан
Вудруф
Гость
« Ответ #12 : Октябрь 02, 2006, 06:33 »

%QTDIR%/lib -> qtmaind.a
У тебя скомпилирована только релизная версия Qt?
Записан
Cyrax
Гость
« Ответ #13 : Октябрь 05, 2006, 21:36 »

Да, была релизная.
Теперь уж на гиг распух...
Записан
Вудруф
Гость
« Ответ #14 : Октябрь 06, 2006, 09:25 »

tmp удали...

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

 все tmp. У меня debug-and-release занимает 344 Мб. Examples только релизные.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 21.