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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Qt 4.8.1 + mingw (gcc 4.7) проблемы сборки  (Прочитано 19666 раз)
niXman
Гость
« Ответ #15 : Май 18, 2012, 23:35 »

Цитировать
общая сборка завершилась принудительно на JavaScriptCore. Рецепт автора темы не помог
ну хз-хз.. мне помог.
Записан
Roma_F
Гость
« Ответ #16 : Май 19, 2012, 15:33 »

ну хз-хз.. мне помог.
для Qt 4.8.1 ?

В Qt 4.7.4 оказалось две копии JavaScriptCore (разных версий).
\src\3rdparty\javascriptcore\JavaScriptCore\ (2010-08-24) и \src\3rdparty\webkit\JavaScriptCore\  (2010-06-18)
Исправил и там и там, всё собралось.
Версия в 3rdparty\javascriptcore по моему даже не трогалась - нет папки "tmp" с объектниками.
Записан
niXman
Гость
« Ответ #17 : Май 19, 2012, 16:06 »

Цитировать
для Qt 4.8.1 ?
да  .
Записан
Имя пользователя
Гость
« Ответ #18 : Декабрь 01, 2012, 17:05 »

т.е. ты собираешь в 64ех битной ОСи, используя 64ех битный компилятор, 32ух битную кутю?
я правильно понял?
Да, именно так.

Кстати, ошибка "The application was unable to start correctrly (oxc000007b)" возникала из-за того, что в PATH были добавлены 64 битные дллки (те, которые в ...\x64-4.7.2-release-posix-sjlj-rev1\bin). Добавил в PATH путь к ...\mingw\x64-4.7.2-release-posix-sjlj-rev1\x86_64-w64-mingw32\lib32\.

Теперь проблема в другом месте:
Код:
g++ -c -include tmp\obj\debug_shared\qt_pch.h -fno-keep-inline-dllexport -m32 -g -Wall -Wextra -frtti -fexceptions -mthreads -DQT_S
HARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST
_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -D_USE_MATH_DEFINES -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPO
RT -DQT_DLL -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -I"..\..\include" -I"..\..\include\QtCore" -I"tmp\rcc\debug
_shared" -I"tmp" -I"global" -I"..\..\tools\shared" -I"..\3rdparty\zlib" -I"..\3rdparty\harfbuzz\src" -I"..\3rdparty\md5" -I"..\3rdp
arty\md4" -I"..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"..\..\mkspecs\win32-g++-4.6" -o tmp\obj\debug_shared\qfilesystemwa
tcher.o io\qfilesystemwatcher.cpp
g++ -m32 -mthreads -shared -Wl,--out-implib,c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib\libQtCored4.a -o ..\..\lib\QtCored4.dl
l object_script.QtCored.Debug  -L"c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib" -L"c:\Qt\qt-everywhere-opensource-src-4.8.3-x32
\lib" -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 tmp\obj\debug_shared\QtCored_resource_res.o
g++ -m32 -Wl,-s -mthreads -shared -Wl,--out-implib,c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib\libQtCore4.a -o ..\..\lib\QtCor
e4.dll object_script.QtCore.Release  -L"c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib" -L"c:\Qt\qt-everywhere-opensource-src-4.8
.3-x32\lib" -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 tmp\obj\release_shared\QtCore_resource_res.o
c:/mingw/x64-4.7.2-release-posix-sjlj-rev1/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: i386:
x86-64 architecture of input file `tmp\obj\release_shared\QtCore_resource_res.o' is incompatible with i386 output
collect2.exe: error: ld returned 1 exit status
Makefile.Release:497: recipe for target '..\..\lib\QtCore4.dll' failed
mingw32-make[2]: *** [..\..\lib\QtCore4.dll] Error 1
mingw32-make[2]: Leaving directory 'C:/Qt/qt-everywhere-opensource-src-4.8.3-x32/src/corelib'
Makefile:56: recipe for target 'release-all' failed
mingw32-make[1]: *** [release-all] Error 2
mingw32-make[1]: *** Waiting for unfinished jobs....
c:/mingw/x64-4.7.2-release-posix-sjlj-rev1/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: i386:
x86-64 architecture of input file `tmp\obj\debug_shared\QtCored_resource_res.o' is incompatible with i386 output
collect2.exe: error: ld returned 1 exit status
Makefile.Debug:497: recipe for target '..\..\lib\QtCored4.dll' failed
mingw32-make[2]: *** [..\..\lib\QtCored4.dll] Error 1
mingw32-make[2]: Leaving directory 'C:/Qt/qt-everywhere-opensource-src-4.8.3-x32/src/corelib'
Makefile:40: recipe for target 'debug-all' failed
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory 'C:/Qt/qt-everywhere-opensource-src-4.8.3-x32/src/corelib'
makefile:246: recipe for target 'sub-corelib-make_default-ordered' failed
mingw32-make: *** [sub-corelib-make_default-ordered] Error 2
Записан
niXman
Гость
« Ответ #19 : Декабрь 01, 2012, 17:19 »

Цитировать
ошибка "The application was unable to start correctrly (oxc000007b)" возникала из-за того, что в PATH были добавлены 64 битные дллки (те, которые в ...\x64-4.7.2-release-posix-sjlj-rev1\bin). Добавил в PATH путь к ...\mingw\x64-4.7.2-release-posix-sjlj-rev1\x86_64-w64-mingw32\lib32\.
я писал об этом тут: http://www.prog.org.ru/index.php?topic=18979.msg147921#msg147921
Цитировать
Для x86_64 компилятора, .dll модули для i686 цели располагаются в mingw/x86_64-w64-mingw32/lib32.

далее..
эти две команды отличаются только тем, что вторая стрипает dll`ку, ибо релизная.
Цитировать
g++ -m32 -mthreads -shared -Wl,--out-implib,c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib\libQtCored4.a -o ..\..\lib\QtCored4.dll object_script.QtCored.Debug  -L"c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib" -L"c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib" -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 tmp\obj\debug_shared\QtCored_resource_res.o

g++ -m32 -Wl,-s -mthreads -shared -Wl,--out-implib,c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib\libQtCore4.a -o ..\..\lib\QtCore4.dll object_script.QtCore.Release  -L"c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib" -L"c:\Qt\qt-everywhere-opensource-src-4.8.3-x32\lib" -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 tmp\obj\release_shared\QtCore_resource_res.o
единственное что приходит на ум, покажи команды сборки этих объектников: 1)"tmp\obj\debug_shared\QtCored_resource_res.o", 2)"tmp\obj\release_shared\QtCore_resource_res.o"
Записан
Имя пользователя
Гость
« Ответ #20 : Декабрь 01, 2012, 19:57 »

единственное что приходит на ум, покажи команды сборки этих объектников: 1)"tmp\obj\debug_shared\QtCored_resource_res.o", 2)"tmp\obj\release_shared\QtCore_resource_res.o"

Вот:
Код:
windres -i QtCored_resource.rc -o tmp\obj\debug_shared\QtCored_resource_res.o --include-dir=. -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -D_USE_MATH_DEFINES -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2

Посмотрел список опций windres , там есть:
Цитировать
-F target
--target target
    Specify the BFD format to use for a COFF file as input or output. This is a BFD target name; you can use the --help option to see a list of supported targets. Normally windres will use the default format, which is the first one listed by the --help option. Target Selection.

Вот только:
Цитировать
D:\>windres -F --help
C:\mingw\x64-4.7.2-release-posix-sjlj-rev1\bin\windres.EXE: Can't detect target endianness and architecture.
Так что хз чему эта опция равна по умолчанию.
В гугле для mingw64 нашел такое:
windres.exe -F pe-i386

В общем, спасибо за подсказку, буду пробовать.
Вот только понять бы ещё как Qt передать опции для windres?
Может можно прямо в следующую строчку добавить?
QMAKE_RC      = $${CROSS_COMPILE}windres
Записан
niXman
Гость
« Ответ #21 : Декабрь 01, 2012, 21:34 »

windres входящий в состав сборок mingw-builds, так же является двух целевым.
я сейчас немогу вспомнить, и нет вендового компа под рукой, но у windres есть возможность указать целевую архитектуру.
Записан
Имя пользователя
Гость
« Ответ #22 : Декабрь 01, 2012, 23:29 »

Да, я тоже нашел (выше писал). Но как Qt эту опцию передать хз.
Сделал тупо - заменил windres из 32 битной сборки.
Пока собирается... позже сообщу о результатах.

Похоже всё ок.   Улыбающийся
« Последнее редактирование: Декабрь 02, 2012, 00:40 от DarkEld3r » Записан
niXman
Гость
« Ответ #23 : Декабрь 06, 2012, 10:44 »

это -
Цитировать
QMAKE_RC      = $${CROSS_COMPILE}windres
не пробовал?
Записан
Имя пользователя
Гость
« Ответ #24 : Декабрь 08, 2012, 19:16 »

не пробовал?
Нет и не горю желанием пересобирать всё заново.  Улыбающийся
Но совет запомнил, попробую в следующий раз как-то.
Записан
korwru
Гость
« Ответ #25 : Январь 05, 2013, 00:35 »

Код:
QMAKE_RC      = $${CROSS_COMPILE}windres -F pe-i386
Изменение данной строчки помогло.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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