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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите собрать 64-битную версию qt4.8.(6-7) на Win7  (Прочитано 6069 раз)
Rododendron
Гость
« : Октябрь 13, 2017, 08:54 »

Мне нужна 64-битная версия Qt4 под Win7. Какой компилятор лучше всего для этого подойдет, при условии, что используется С++11 и С++14? Желательно, чтобы работал дебаггер.
Я пробовал компилировать с помощью MSVC-2015, который поддерживается в Qt4.8.7, но не удалось это сделать.
Ошибка при компиляции такова:
Код:
c:\qt-everywhere-opensource-src-4.8.7>nmake
Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation.  All rights reserved.
        C:\qt-everywhere-opensource-src-4.8.7\bin\qmake C:/qt-everywhere-opensou
rce-src-4.8.7/\projects.pro  -o Makefile -spec win32-msvc2015
Could not find mkspecs for your QMAKESPEC(win32-msvc2015) after trying:
        C:\Qt\Qt-4.8.7_64bit\mkspecs
Error processing project file: C:/qt-everywhere-opensource-src-4.8.7//projects.p
ro
NMAKE : fatal error U1077: 'C:\qt-everywhere-opensource-src-4.8.7\bin\qmake.EXE'
 : return code '0x3'
Stop.

Пробовал по этой инструкции собрать Qt4.8.6, тоже не получилось - та же ошибка.

Пробовал компилятор mingw64:
Код:
g++ --version
g++ (x86_64-posix-seh, Built by strawberryperl.com project) 7.1.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Та же ошибка:
Код:
> mingw32-make -j8
C:/qt-everywhere-opensource-src-4.8.7/bin/qmake C:/qt-everywhere-opensource-src-4.8.7//projects.pro  -o Makefile -spec win32-g++-4.6
Could not find mkspecs for your QMAKESPEC(win32-g++-4.6) after trying:
        D:/Qt/Qt-4.8.7_64bit\mkspecs
Error processing project file: C:/qt-everywhere-opensource-src-4.8.7//projects.pro
Makefile:2: recipe for target 'all' failed
mingw32-make: *** [all] Error 3

Помогите с настройкой mkspec.. ничего вразумительного не нашел в сети.
Устанавливал переменную среды:
Код:
set QMAKESPEC=C:\qt-everywhere-opensource-src-4.8.7\mkspecs
Тоже ноль эффекта. Все равно ищет на диске D.
« Последнее редактирование: Октябрь 13, 2017, 09:07 от Rododendron » Записан
Rododendron
Гость
« Ответ #1 : Октябрь 13, 2017, 09:59 »

Извиняюсь за неточность. QMAKESPEC надо задавать до конфигурирования!
С правильным QMAKESPEC не может сконфигурировать, пишет, что в mkspecs нет поддерживаемой платформы..
Значит папка win32-msvc2015 относится только к 32-битной версии.. Это печально..
Чем скомпилять КуТ? Неужели никому не понадобилась 64-битная версия 4 КуТ под Винду?
Может проще делать кросскомпиляцию из Линукс???
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Октябрь 13, 2017, 10:49 »

Цитировать
c:\qt-everywhere-opensource-src-4.8.7>nmake

Нужно компилировать из 64-битного окружения командной строки, предоставляемой msvc. А у тебя хз что там. Ты вообще, гуглишь?

Цитировать
Может проще делать кросскомпиляцию из Линукс???

Из задницы  Злой
« Последнее редактирование: Октябрь 13, 2017, 10:56 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #3 : Октябрь 13, 2017, 11:42 »

Неужели никому не понадобилась 64-битная версия 4 КуТ под Винду?

а зачем ?
Записан
Rododendron
Гость
« Ответ #4 : Март 06, 2018, 13:53 »

Неужели никому не понадобилась 64-битная версия 4 КуТ под Винду?

а зачем ?


Если вам достанется старый проект, который трудно перенести с Qt4 на Qt5, но при этом нужно сделать так, чтобы он мог кушать более полутора гигов памяти, то вы призадумаетесь о 64-битной Qt4.


Судя по всему, собрать Qt-4.8 с помощью msvc, который идет с бесплатной студией Express, вряд ли удастся. Видел одну статью, как это сделать с помощью профессиональной версии. Т.к. платной студии у меня нет, то пытался собрать Qt4 с помощью MinGW-64, и тоже безрезультатно, были ошибки при сборке. Так и забросил это дело, но появился еще один проект, в котором инклудятся большие массивы данных прямо в стек, мне было лень переделывать программу, и я снова решил заполучить себе 64-битную Qt4. И на этот раз получилось!

Может кому пригодится.

Вам поможет msys2, в котором есть пакетный менеджер pacman, через который можно поставить все необходимое, и ничего компилировать не придется.

В консоли msys64:

Код:
pacman --needed -S git mingw-w64-x86_64-gcc base-devel
pacman -S mingw-w64-x86_64-qt4

Аналогично можно поставить qt5:

Код:
pacman -S mingw-w64-x86_64-qt5

Креатор устанавливать не нужно. В своем креаторе добавляете профиль, путь к qmake будет примерно таким: C:\msys64\mingw64\bin\qmake.exe

Одновременно qt5 и qt4 установлены быть не могут, но это не проблема, т.к. установка занимает около 2 минут. Найти в сети работающую Qt5 для 64-битного компилятора еще не проблема, а вот с qt4 я облазил очень много сайтов, и нигде не было работающего решения, а самому собрать так и не удалось.

Надеюсь, кому-то поможет.
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #5 : Март 07, 2018, 10:15 »

Бывают, конечно, возникают небольшие проблемы со сборкой, но можно ведь код Qt подправить.

Нашел свои правки для 4.7.4 для сборки mingw-5.3.0-64bit
Цитировать
Перед сборкой необходимо внести изменения в исходные коды Qt:

./src/corelib/tools/qsimd.cpp - в строке 288 заменить блок
Код
C++ (Qt)
#if defined (Q_OS_WIN64)
   {
      int info[4];
      __cpuid(info, 1);
      feature_result = info[2];
   }
#elif defined(Q_CC_GNU)
   quint64 tmp;
   asm ("xchg %%rbx, %1\n"
        "cpuid\n"
        "xchg %%rbx, %1\n"
       : "=c" (feature_result), "=&r" (tmp)
       : "a" (1)
       : "%edx"
       );
#endif
на

Код
C++ (Qt)
#if defined(Q_CC_GNU)
   quint64 tmp;
   asm ("xchg %%rbx, %1\n"
        "cpuid\n"
        "xchg %%rbx, %1\n"
       : "=c" (feature_result), "=&r" (tmp)
       : "a" (1)
       : "%edx"
       );
#elif defined (Q_OS_WIN64)
   {
      int info[4];
      __cpuid(info, 1);
      feature_result = info[2];
   }
#endif
Командная строка для сборки

Код:
> configure.exe -opengl desktop -fast -nomake demos -nomake examples -no-libtiff -mp

Цитировать
Одновременно qt5 и qt4 установлены быть не могут. ...

Из пакетов может быть и не могут, а так сколько угодно).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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