Название: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 15, 2016, 17:01 Для этого надо Qt 4.7.0 в 64 бита под этой виндой собрать. MinGW32 не умеет, выяснил это из разных форумов. Вроде есть MinGW-w64, но не ясно, соберётся ли им эта версия Qt, и вообще можно ли получить желаемое. Много чего обсуждают, у кого-то какие-то проблемы появляются, и ни разу не нашёл сообщения, что всё получилось. С Qt 4.х вообще не встречал, все сборки в 64 бита делают c Qt 5.x.
Что характерно - для нескольких разных Linux-ов и 32 и 64 бита варианты без проблем собирались и давно работают. В общем, вопрос - кто делал подобное с Qt 4.7? Или хотя бы с Qt 4.8.x? Последовательность действий отличается от стандартной? Нужны какие-нибудь дополнительные действия? Это (https://wiki.qt.io/MinGW-64-bit) видел, там про Qt 5, про Qt 4.7.0 не ясно. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: kambala от Февраль 15, 2016, 17:03 а если студией собрать?
Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 15, 2016, 17:23 Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Февраль 15, 2016, 18:01 Я делал, обычная компиляция. Система должна быть 64-битной. Ставишь mingw 64-битный, компилишь Qt. Я компилил когда-то с помощью mingw 4.8.x, всё работало.
Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 15, 2016, 18:30 Я делал, обычная компиляция. Система должна быть 64-битной. Ставишь mingw 64-битный, компилишь Qt. Я компилил когда-то с помощью mingw 4.8.x, всё работало. вот этот (https://sourceforge.net/projects/mingw-w64/) mingw? или этот (https://sourceforge.net/projects/mingwbuilds/)? или этот (https://sourceforge.net/projects/mingw/files/)? Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: kai666_73 от Февраль 15, 2016, 19:43 Официальная дока:
https://wiki.qt.io/MinGW-64-bit Раньше здесь были подходящие сборки Qt http://tver-soft.org/qt64 но, по ходу, кануло в лету ( upd. Здесь еще доступно https://sourceforge.net/projects/qt64ng/files/qt/x86-64/5.4.2/ Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 15, 2016, 20:48 Официальная дока: Здесь еще доступно Спасибо, кэп... Но надо было полностью первое сообщение прочесть - там речь о Qt 4.7.x, с которым приложение собирается. Перевод его на 5.х никто не оплачивает. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Февраль 15, 2016, 21:28 Я делал, обычная компиляция. Система должна быть 64-битной. Ставишь mingw 64-битный, компилишь Qt. Я компилил когда-то с помощью mingw 4.8.x, всё работало. вот этот (https://sourceforge.net/projects/mingw-w64/) mingw? не совсем, но на том же сайте: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/ Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 15, 2016, 22:07 Я делал, обычная компиляция. Система должна быть 64-битной. Ставишь mingw 64-битный, компилишь Qt. Я компилил когда-то с помощью mingw 4.8.x, всё работало. вот этот (https://sourceforge.net/projects/mingw-w64/) mingw? не совсем, но на том же сайте: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/ Вот я оттуда скачивал только с другой страницы последнюю версию, называется mingw-builds-installer.exe. Говорит, что не может скачать repository.txt. Поискал про эту ошибку - оказывается она уже типа исправлена, скачал с другой ссылки mingw-w64-installer.exe точно такого же размера, и также не работает. Win7 запущена в виртуалке, и разумеется в ней все защиты и брендмауер отключены, антивирусов нет, ничего в сети не мешает. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Февраль 15, 2016, 22:19 Вот я оттуда скачивал только с другой страницы последнюю версию, называется mingw-builds-installer.exe. Говорит, что не может скачать repository.txt. Поискал про эту ошибку - оказывается она уже типа исправлена, скачал с другой ссылки mingw-w64-installer.exe точно такого же размера, и также не работает. Win7 запущена в виртуалке, и разумеется в ней все защиты и брендмауер отключены, антивирусов нет, ничего в сети не мешает. Ты совсем не то скачал. Качай архивы из подкаталогов, например https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/seh/ Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 15, 2016, 22:34 Вот я оттуда скачивал только с другой страницы последнюю версию, называется mingw-builds-installer.exe. Говорит, что не может скачать repository.txt. Поискал про эту ошибку - оказывается она уже типа исправлена, скачал с другой ссылки mingw-w64-installer.exe точно такого же размера, и также не работает. Win7 запущена в виртуалке, и разумеется в ней все защиты и брендмауер отключены, антивирусов нет, ничего в сети не мешает. Ты совсем не то скачал. Качай архивы из подкаталогов, например https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/seh/ И что с ними делать? Распаковать в C:\MinGW и настроить PATH? Или там что-то собирать надо? Если собирать, то чем? Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Февраль 15, 2016, 23:10 И что с ними делать? Распаковать в C:\MinGW и настроить PATH? распаковать куда-нибудь, и настроить PATH. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 16, 2016, 18:51 Установил MinGW 64 4.8.1. Глухо не собирается Qt. При сборке moc.exe происходит фигня:
Цитировать gcc: error: unrecognized command line option -Wl Не понятно - это дыра в дистрибутиве Qt 4.7.0, или что? В Windows XP 32 бита Qt 4.7.0 без проблем собирался с помощью MinGW еще более ранней версии. Но более раннего MinGW 64 бит нет в природе. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: kai666_73 от Февраль 16, 2016, 19:20 Официальная дока: Здесь еще доступно Спасибо, кэп... Но надо было полностью первое сообщение прочесть - там речь о Qt 4.7.x, с которым приложение собирается. Перевод его на 5.х никто не оплачивает. https://sourceforge.net/projects/qt64ng/files/qt/x86-64/4.8.6/mingw-4.9/seh/ Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 16, 2016, 19:28 может быть самым простым будет перейти на 4.8.6 нет, сейчас переходы на другие версии Qt исключены, надо собрать с 4.7.0 - это явно должно быть возможно, так как в Win32, Lin32 и Lin64 без проблем работает Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Февраль 16, 2016, 21:05 Установил MinGW 64 4.8.1. Глухо не собирается Qt. При сборке moc.exe происходит фигня: Цитировать gcc: error: unrecognized command line option -Wl А полная строка компиляции где происходит ошибка? Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 16, 2016, 21:35 да вот такое там присутствует:
Цитировать -mthreads -Wl -o ..\..\..\bin\moc.exe в форумах пишут, что в шаблонах qmake.conf присутствует QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl отсюда и попадает в Makefile - но как оно умудрялось тогда в win32 собирать? Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Old от Февраль 16, 2016, 21:49 -Wl это передача параметра линкеру. Правильно это должно выглядеть примерно так:
Код: -mthreads -Wl,-o ..\..\..\bin\moc.exe Попробуйте добавить запятую (пробелов между этими опциями быть не должно). Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Февраль 16, 2016, 22:11 да нет, -o это уже опция для записи бинарника moc. Видимо опция -Wl задана неверно. В Qt 4.8.6 её вообще нет:
Код: QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads Следовательно, нужно либо конфигурировать без exceptions, либо самому исправить qmake.conf. Ещё думаю, что во время configure нужно указать mkspec win32-g++-4.6 Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 17, 2016, 01:19 да нет, -o это уже опция для записи бинарника moc. Видимо опция -Wl задана неверно. В Qt 4.8.6 её вообще нет: Код: QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads Следовательно, нужно либо конфигурировать без exceptions, либо самому исправить qmake.conf. Ещё думаю, что во время configure нужно указать mkspec win32-g++-4.6 Включать win32-g++-4.6 точно не надо - эта опция нужна только если компилятор версии 4.6. А вот отключить иксепшны имеет смысл, я ими нигде не пользовался. Возможно даже отключал когда для win32 собирал. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 17, 2016, 14:17 С опцией -no-exceptions собрался moc, но теперь он слетает при компиляции corelib.
Цитировать Makefile.Debug:586: recipe for target 'tmp/moc/debug_shared/moc_qabstractanimation.cpp' failed mingw32-make[2]: *** [tmp/moc/debug_shared/moc_qabstractanimation.cpp] Error 2003130816 mingw32-make[2]: Leaving directory 'C:/Qt/4.7.0/src/corelib' Makefile:40: recipe for target 'debug-all' failed mingw32-make[1]: *** [debug-all] Error 2 mingw32-make[1]: Leaving directory 'C:/Qt/4.7.0/src/corelib' Makefile:244: recipe for target 'sub-corelib-make_default-ordered' failed mingw32-make: *** [sub-corelib-make_default-ordered] Error 2 Про ошибку 2003130816 гугл глухо молчит. ЗЫ С исправленным qmake.conf то же самое, слетает в этом же месте. Сколько раз собирал Qt 4.7 на разных платформах - ни разу с такой ерундой не сталкивался. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Февраль 17, 2016, 16:13 Включать win32-g++-4.6 точно не надо - эта опция нужна только если компилятор версии 4.6. если компилятор версии >= 4.6. Это не необходимо, но иногда нужно, если линкер сваливается с ошибкой нехватки памяти в debug режиме. P.S. От следующего сообщения ты не показал полный лог компиляции. Без него ничего понять невозможно. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Февраль 17, 2016, 16:54 Последнее действие
Цитировать mingw32-make[2]: Entering directory 'C:/Qt/4.7.0/src/corelib' C:\Qt\4.7.0\bin\moc.exe -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE _SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAS T_WARNINGS -DQT_MOC_COMPAT -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATI ON -D_USE_MATH_DEFINES -DHB_EXPORT=Q_CORE_EXPORT -DQT_HAVE_MMX -DQT_HAVE_SSE -DQ T_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_DLL -I"..\..\include" -I"..\..\include\QtCore" -I"tmp\rcc\debug_shared" -I"tmp" -I"global" -I"..\3rdparty\zlib" -I"..\3rdparty \harfbuzz\src" -I"..\3rdparty\md5" -I"..\3rdparty\md4" -I"..\..\include\ActiveQt " -I"tmp\moc\debug_shared" -I"..\..\mkspecs\win32-g++" -D__GNUC__ -DWIN32 animat ion\qabstractanimation.h -o tmp\moc\debug_shared\moc_qabstractanimation.cpp Makefile.Debug:586: recipe for target 'tmp/moc/debug_shared/moc_qabstractanimati on.cpp' failed mingw32-make[2]: *** [tmp/moc/debug_shared/moc_qabstractanimation.cpp] Error 200 3130816 mingw32-make[2]: Leaving directory 'C:/Qt/4.7.0/src/corelib' Makefile:40: recipe for target 'debug-all' failed mingw32-make[1]: *** [debug-all] Error 2 mingw32-make[1]: Leaving directory 'C:/Qt/4.7.0/src/corelib' Makefile:245: recipe for target 'sub-corelib-make_default-ordered' failed mingw32-make: *** [sub-corelib-make_default-ordered] Error 2 Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Март 02, 2016, 22:37 up
некоторое время некогда было заниматься этим вопросом, сегодня опять вернулся почитал изменения в версиях Qt после 4.7.0, обнаружил, что в какой-то 4.7.х версии были проблемы при сборке в WinXP 64, значит в Win7 64 тоже не удивительно решил собрать Qt 4.8.6, раз тут с ним получалось всё, и вроде по changes приложение должно с ним собраться без именений, запустил сборку в виртуалке Win7, она успешно проскочила место где последний раз спотыкалась, собрались несколько билиблиотек... но упёрся в другой нежданчик - сборка дошла до отладочной библиотеки webkit, и начались чудеса - компоновщик съедает всю оперативную память (ему достаётся 1.4 ГБ или 98% в виртуальной машине), потребляет всего 2%-3% процессорного времени, при этом в каталоге появляется QtWebKitd4.dll 0-го размера, и так пару часов... при снятии компоновщика Ctrl-C в терминале, запускается mingw32-make, файл библиотеки он удаляет, но потом забирает 99% процессора, всё, можно ждать бесконечно, приходится снимать make в таскменеджере места на диске вагон что тут не так - не понятно... QtCored4.dll давно и успешно собралась, и явно размерами побольше чем webkit не то, чтобы в этом приложении мне сию секунду нужен был webkit, но вообще потом понадобится, да и странно как-то... на этой же физической машине в Astra Linux "Орёл" 64 бита Qt 4.7.0 без проблем собирался с помощью GNU CPP в еще меньшем объеме ОЗУ виртуальной машины Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: ssoft от Март 03, 2016, 08:19 Для этого надо Qt 4.7.0 в 64 бита под этой виндой собрать. MinGW32 не умеет, выяснил это из разных форумов. Вроде есть MinGW-w64, но не ясно, соберётся ли им эта версия Qt, и вообще можно ли получить желаемое. Много чего обсуждают, у кого-то какие-то проблемы появляются, и ни разу не нашёл сообщения, что всё получилось. С Qt 4.х вообще не встречал, все сборки в 64 бита делают c Qt 5.x. В общем, вопрос - кто делал подобное с Qt 4.7? Я собирал проект Qt 4.7.4 с помощью mingw-w64 https://sourceforge.net/projects/mingw-w64/ (https://sourceforge.net/projects/mingw-w64/) версия x86_64-5.3.0-posix-seh-rt_v4-rev0 Есть небольшие особенности). Мои ремарки по сборке 64 бит. Пришлось отключить tiff и поправить исходники. Код: configure.exe -opengl desktop -fast -nomake demos -nomake examples -no-libtiff -mp Изменения в исходных кодах ./src/corelib/tools/qsimd.cpp поменять в строке 288 Код
вместо Код
Весь проект собирается. Надо отметить, что QtCreator 32 bit не дружит с qmake 64 bit, его также необходимо пересобрать в 64 битной версии, или пользоваться командной строкой. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Март 07, 2016, 19:16 С грехом пополам пробился через проблемы сборки Qt (библиотеки webkit с отладчиком вообще подсунул из готового, собранного таким же компилятором из такой же версии Qt). Настраиваю проект и упёрся в такой косяк:
в проекте есть win32:contains(QMAKE_HOST.arch, x86):{ SYSTEM_SUFFIX = w32 } win32:contains(QMAKE_HOST.arch, x86_64):{ SYSTEM_SUFFIX = w64 } и QMAKE_HOST.arch глухо содержит x86, хотя в виртуалке установлен, разумеется, mingw32, компилятор в настройках указан 64 бита - а вот сам qmake - не совсем понятно, он 32-х битный что ли? у меня в 64-х битной ОС собрался 32-х битный Qt? как могло такое получиться? у кого-нибудь есть 32-х битный Qt 4.8.6, собранный с помощью mingw 4.9.2? какой там размер, например QtWebKit4.dll? Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Март 07, 2016, 21:48 up но упёрся в другой нежданчик - сборка дошла до отладочной библиотеки webkit, и начались чудеса - компоновщик съедает всю оперативную память (ему достаётся 1.4 ГБ или 98% в виртуальной машине) Линковка debug webkit очень жирная. Иногда помогает mkspec win32-g++-4.6, но если памяти мало, то не поможет и он. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Март 07, 2016, 23:14 У виртуалки памяти 1.6 ГБ, больше дать не могу. Win7 на удивление умеет ужиматься, компоновщик получает до 1.4 ГБ. С ключом win32-g++-4.6 этого может хватить?
На машине с 2 ГБ физической памяти и хостом Linux 64, в виртуалке с 1 ГБ и гостевой Linux 32 дебаговый webkit без проблем собирался. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Март 08, 2016, 14:13 Win7 на удивление умеет ужиматься, компоновщик получает до 1.4 ГБ. С ключом win32-g++-4.6 этого может хватить? Не факт. Я точно не помню сколько он сожрёт даже с g++-4.6. Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Март 09, 2016, 18:10 Меня сейчас больше интересует, вариант собирается. Пересобрал с явным указанием -platform, всё равно QMAKE_HOST.arch == x86 вместо x86_64.
Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Alex Custov от Март 09, 2016, 18:30 я собирал на 64-битной системе Qt 4.8.6, QMAKE_HOST.arch был x86_64. Ты уверен, что использовал 64-битный компилятор? Если да, то запакуй и пришли скомпилированный Qt, посмотрим.
Название: Re: Отправлено: Гурман от Март 09, 2016, 21:25 А смысл? Я посмотрел собранные DLLки в редакторе ресурсов - Qt собрался 64-х битный. Но указанная переменная qmake почему-то глухо x86. А мне нужно, чтобы была x86_64, у меня это в проектах используется.
Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Март 10, 2016, 18:21 Выяснилось, почему у меня при всём вроде бы 64-х битном креатор хочет собрать 32-х битный проект. Оказывается, я установил 32-х битный QtCreator, хотя вроде выбирал где-то 64-х битный. В системных переменных есть автоматическая, которую устанавливает cmd, она содержит версию процессора: PROCESSOR_ARCHITECTURE=AMD64 так у меня она выглядит при выполнении set в командной строке. Но если я использую в проекте: message($$(PROCESSOR_ARCHITECTURE)) то в консоли QtCreator получаю Project MESSAGE: x86.
Название: Re: Приспичило собрать приложение под Win7 64 бита... Отправлено: Гурман от Март 10, 2016, 23:30 В общем, всё получилось. Собирать 64-х битный Qt было влом, нашел собранный кем-то 3.0.0. Ругается на Qt, что нет точек входа в библиотеках - ну да, он же намного позднее, чем сам Qt, который я использовал. Но приложение собралось, и работает. ;D Как я и ожидал, с Qt 4.8.6 и MinGW 4.9.2 всё проскочило сразу, без изменений - ессно, ведь оно у меня в Linux собирается каким-то GCC из последних, правда тоже с Qt 4.7.0. Это есть хорошо. Значит у меня приложение совместимо как минимум с Qt 4.8.6 и работает в средах Windows 32/64 и Linux 32/64. Это радовает! :D
Уже хочу попробовать в Solaris и FreeBSD. Кто собирал в них Qt? Что там с версиями, разрядностью? Есть подводные камни? |