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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Qt 4.7.2. MinGw статическая сборка Win7  (Прочитано 21719 раз)
AntonUfo
Гость
« : Март 31, 2011, 12:29 »

Все привет !

Знаю что эта тема поднималась не раз, но у меня не получается Subj.

Скачано:

qt-creator-win-opensource-2.1.0
qt-win-opensource-4.7.2-mingw

В "переменные среды" добавлено следующее:
в Path:   C:\qtcreator-2.1.0\MinGW\bin;c:\qt\4.7.2m
в QTDIR: C:\Qt\4.7.2m

в файле qtvars.bat:
Код:
@echo off
rem
rem This file is generated
rem

echo Setting up a MinGW/Qt only environment...
echo -- QTDIR set to C:\Qt\4.7.2m
echo -- PATH set to C:\Qt\4.7.2m\bin
echo -- Adding C:\Qt\qtcreator-2.1.0\mingw\bin to PATH
echo -- Adding %SystemRoot%\System32 to PATH
echo -- QMAKESPEC set to win32-g++

set QTDIR=C:\Qt\4.7.2m
set PATH=C:\Qt\4.7.2m\bin
set PATH=%PATH%;C:\Qt\qtcreator-2.1.0\mingw\bin
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++

if not "%1"=="compile_debug" goto END
cd %QTDIR%
echo This will configure and compile qt in debug.
echo The release libraries will not be recompiled.

pause

configure -static -release -no-exceptions -platform win32-g++ -qt-sql-sqlite -qt-sql-odbc -no-qt3support -no-openssl -no-phonon -no-webkit -nomake demos -nomake examples -no-s60

pause

cd %QTDIR%\src
qmake
mingw32-make sub-src

:END


в файле qmake.conf следующие изменения:
Код:
QMAKE_LFLAGS = -static -static-libgcc -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
QMAKE_LFLAGS_DLL       = -static
QMAKE_LFLAGS_RELEASE   = -Wl,-s -static-libgcc

кто что может посоветовать, перерыл весь интернет ни один из встреченных способов непомог....
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Март 31, 2011, 12:32 »

А ошибки какие?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
AntonUfo
Гость
« Ответ #2 : Март 31, 2011, 12:53 »

А ошибки какие?

если честно то я уже столько вариантов перепробовал что запутался и ошибки всегда разные... надеюсь на то что кто нибудь сохранял свои qtvars.bat, configure и помнит какие изменения вносились в qmake.config

могу только добавить что нестатическая сборка (на которую настроен Qt при инсталляции) собирается нормально....
« Последнее редактирование: Март 31, 2011, 12:54 от AntonUfo » Записан
madRoger
Гость
« Ответ #3 : Март 31, 2011, 13:33 »

Попробуйте выполнить операции из вашего батника вручную, тогда может будет более понятно, на каком этапе возникает проблема.
Лично я собирал в статику, пользуясь этой ссылкой:
http://novikovmaxim.narod.ru/index.htm?http://novikovmaxim.narod.ru/linux/lin_progr/QtStatic.htm
Пересборка состоит из следующих этапов:
1.mingw32-make.exe confclean (опционально) - убрать мусор если уже пересобирали ранее.
2. configure.exe -static -release... - кнофигурирование
3.mingw32-make.exe sub-src - собственно компиляция
Цитировать
cd %QTDIR%\src
qmake
mingw32-make sub-src

Зачем там qmake ?. Или я ошибаюсь или он там не нужен ?

Вобщем, я рекомендую собирать в консоли руками.
Записан
AntonUfo
Гость
« Ответ #4 : Март 31, 2011, 13:54 »


Зачем там qmake ?. Или я ошибаюсь или он там не нужен ?


после инсталляции qt-win-opensource-4.7.2-mingw автоматом создается файл qtvars.bat в котором qmake присутствует....
Записан
madRoger
Гость
« Ответ #5 : Март 31, 2011, 14:13 »

Я все же рекомендую ручную сборку по шагам как я описал выше, чтобы определить этап, на котором возникает ошибка.

В 4.7.2 порядок пересборки не изменился... Здесь парень собирал 4.7.2 в статику руками и у него все ОК.
http://vasinnet.blogspot.com/2011/03/qt-472-windows-static-mingw.html
Записан
AntonUfo
Гость
« Ответ #6 : Март 31, 2011, 16:08 »

вот опять ничего не получилось, все делал в ручную:

set QTDIR=C:\Qt\4.7.2ms
set PATH=C:\Qt\4.7.2ms\bin
set PATH=%PATH%;C:\Qt\qtcreator-2.1.0\mingw\bin
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++

configure.exe -static -release -no-qt3support -no-exceptions
mingw32-make.exe sub-src

все собралось без ошибок, запускаю QtCreator, параметры, указываю размещение qmake, каталог mingw, нажимаю пересобрать и вылазит ошибка:
Код:
Ошибка работы "C:/MinGW/bin/mingw32-make.exe" в C:/Qt/4.7.2ms/qtc-debugging-helper/: Процесс вернул код 2:
C:/MinGW/bin/mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `C:/Qt/4.7.2ms/qtc-debugging-helper'
g++ -c -O2 -frtti -fno-exceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DUSE_QT_GUI=1 -DHAS_QOBJECT_P_H -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"..\include\QtCore" -I"..\include\QtGui" -I"..\include" -I"..\include\ActiveQt" -I"tmp\moc\release_static" -I"..\mkspecs\win32-g++" -o tmp\obj\release_static\gdbmacros.o gdbmacros.cpp
gdbmacros.cpp: In member function '<unnamed>::QDumper&<unnamed>::QDumper::put(long long unsigned int)':
gdbmacros.cpp:584: предупреждение: неопознанный символ преобразования 'l' в формате
gdbmacros.cpp:584: предупреждение: слишком много аргументов для форматирования
gdbmacros.cpp: In member function '<unnamed>::QDumper&<unnamed>::QDumper::put(long long int)':
gdbmacros.cpp:591: предупреждение: неопознанный символ преобразования 'l' в формате
gdbmacros.cpp:591: предупреждение: слишком много аргументов для форматирования
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -shared -Wl,--out-implib,release\libgdbmacros.a -o release\gdbmacros.dll tmp/obj/release_static/gdbmacros.o  -L"c:\Qt\4.7.2ms\lib" -L"c:\Qt\4.7.2ms\lib" -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
Creating library file: release\libgdbmacros.atmp/obj/release_static/gdbmacros.o:gdbmacros.cpp:(.text+0x857): undefined reference to `_imp___ZN10QByteArrayC1EPKc'
tmp/obj/release_static/gdbmacros.o:gdbmacros.cpp:(.text+0xc2e): undefined reference to
-кусь-
collect2: выполнение ld завершилось с кодом возврата 1
mingw32-make[1]: *** [release\gdbmacros.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.7.2ms/qtc-debugging-helper'
mingw32-make: *** [release] Error 2

и в помощнике отладчика галочка не появляется....

Записан
madRoger
Гость
« Ответ #7 : Март 31, 2011, 16:54 »

Я так понимаю, перевести в статику библиотеку получилось. Предлагаю попробовать собрать проект вручную заново, то есть в консоли: qmake, make - ну как обычно. Если все соберется ОК, вероятно что-то с Креатором. Не совсем понял содержание Кода, половина забита иероглифами. Проверьте правильность сборки release(в проекте и креаторе).
Цитировать
configure.exe -static -release -no-qt3support -no-exceptions
Я всегда собираю с параметром -debug-and-release, чтоб пользовать и debug и release. Есть небольшое подозрение, что могут быть из-за этого баги.

UPD: Пардон, при сборке руками мы конечно же используем mingw32-make, а не make

« Последнее редактирование: Март 31, 2011, 18:34 от madRoger » Записан
AntonUfo
Гость
« Ответ #8 : Апрель 01, 2011, 07:53 »

Я так понимаю, перевести в статику библиотеку получилось. Предлагаю попробовать собрать проект вручную заново, то есть в консоли: qmake, make - ну как обычно. Если все соберется ОК, вероятно что-то с Креатором. Не совсем понял содержание Кода, половина забита иероглифами. Проверьте правильность сборки release(в проекте и креаторе).
Цитировать
configure.exe -static -release -no-qt3support -no-exceptions
Я всегда собираю с параметром -debug-and-release, чтоб пользовать и debug и release. Есть небольшое подозрение, что могут быть из-за этого баги.

UPD: Пардон, при сборке руками мы конечно же используем mingw32-make, а не make

попробовал собрать в статику библиотеку с ключами:
configure.exe -static -debug-and-release -no-qt3support -no-exceptions
mingw32-make.exe sub-src

опять вроде как все собралось но в QtCreator-е в параметрах, указываю размещение qmake, каталог mingw, нажимаю пересобрать и вылазит ошибка... все пути прописаны и нестатическая сборка под VisualStudio и MinGw цепляется нормально, пробовал цеплять стат. сборку для MinGw и на "чистой" машине одни и теже ошибки.... уже три дня парюсь.... переставлял все что только можно по нескольку десятков раз..... ЧТО ДЕЛАТЬ !!! Грустный

а можно вот этот момент поподробней: "попробовать собрать проект вручную заново, то есть в консоли: qmake, make - ну как обычно"
Записан
madRoger
Гость
« Ответ #9 : Апрель 01, 2011, 11:23 »

Цитировать
а можно вот этот момент поподробней: "попробовать собрать проект вручную заново, то есть в консоли: qmake, make - ну как обычно"

Как вы понимаете, Qt Creator - это всего лишь IDE для удобства разработки. В старые добрые времена, когда еще не было Qt Creator, была другая IDE - QDevelop. Она была не очень популярна, поэтому все собирали свои проекты вручную. Все что вам нужно для сборки проекта вручную это библиотека Qt и gcc-компилятор(в данном случае mingw32-make из состава MinGW).
Весь процесс сборки и компиляции программы вручную состоит из следующих пунктов:
1. Имея только исходники (файлы .h, .cpp) создаем проект(файл .pro). Для этого в консоли переходим в директорию с исходниками и вводим qmake -project.
2. Далее создаем файлы Makefile командой qmake.
3. Собственно компиляция и компоновка проекта производится командой mingw32-make. В результате появятся объектные файлы и сам экзешник.

Прежде чем использовать Креатор, рекомендую научиться собирать проекты руками для понимания самого процесса.
Ну и собрав руками, сокращаем количество источников ошибок в вашем случае.

Полезные ссылки:
http://doc.crossplatform.ru/qt/4.3.2/qmake-manual.html
http://voxel3d.strana.de/articles/mingwqtemacs.html
Записан
AntonUfo
Гость
« Ответ #10 : Апрель 01, 2011, 11:40 »

Весь процесс сборки и компиляции программы вручную состоит из следующих пунктов:
1. Имея только исходники (файлы .h, .cpp) создаем проект(файл .pro). Для этого в консоли переходим в директорию с исходниками и вводим qmake -project.
2. Далее создаем файлы Makefile командой qmake.
3. Собственно компиляция и компоновка проекта производится командой mingw32-make. В результате появятся объектные файлы и сам экзешник.

таким образом проект в exe собрался...., почему QTCreator может не настраиваться ?
Записан
madRoger
Гость
« Ответ #11 : Апрель 01, 2011, 12:27 »

Какие у вас параметры отладчика в Креаторе? (инструменты-Параметры-Отладчик)
Записан
AntonUfo
Гость
« Ответ #12 : Апрель 01, 2011, 12:46 »

Какие у вас параметры отладчика в Креаторе? (инструменты-Параметры-Отладчик)

на вкладке Помощник отладчика:
галка на Использовать помощник отладчика
галка на использовать модель кода


и вот еще если нажимаю на "Молоток" - собрать все, то ничего не собирается ни в режиме дебаг ни в режиме релиз, и лезут вот такие ошибки...
Записан
madRoger
Гость
« Ответ #13 : Апрель 01, 2011, 12:53 »

1 вариант - попробовать отказаться от использования помощника отладчика.
2 вариант - создать в Креаторе проект типа "Hello world!" с нуля и попробовать запустить его.

Мне в настройках отладчика больше были интересны параметры вкладок CDB, Gdb.
Записан
AntonUfo
Гость
« Ответ #14 : Апрель 01, 2011, 13:03 »

1 вариант - попробовать отказаться от использования помощника отладчика.
2 вариант - создать в Креаторе проект типа "Hello world!" с нуля и попробовать запустить его.

Мне в настройках отладчика больше были интересны параметры вкладок CDB, Gdb.

вот такие ошибки лезут при попытке "Собрать все" - для "пустого" оконного проекта типа Hello world

вот параметры CDB и Gdb
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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