RiseOfDeath
@RiseOfDeath
Диванный эксперт.

Как собрать Qt5 для кроскомпиляции из под Linux для Windows?

Собственно суть вопроса - пытаюсь собрать Qt5.3.2 что бы из под линукса собирать проги под винду. При компиляции натыкают на непонятные мне ошибки.

Конфигурирую вот так:
./configure -xplatform win32-g++ -prefix /opt/qt5win32 -device-option CROSS_COMPILE=i686-w64-mingw32- -nomake examples -nomake tools -static -continue  -qt-sql-sqlite


И при компиляции выдает некоторые досадные ошибки:

spoiler

/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:12:2: ошибка: #error No __uuidof support for this targetIn file included from /usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comdef.h:169:0,
from qwindowscontext.cpp:80:
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:12:2: ошибка: #error No __uuidof support for this target

...

/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h: В функции-члене «long int _com_ptr_t<_IIID>::CreateInstance(const CLSID&, IUnknown*, DWORD)»:
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:202:56: ошибка: «typeof» не имеет аргументов, зависящих от параметра-шаблона, поэтому должна быть доступна декларация «typeof» [-fpermissive]
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:202:56: замечание: (с ключом «-fpermissive», G++ примет данный код, но разрешение использовать недекларированные имена будет отменено в дальнейших версиях)
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:202:56: ошибка: argument in position «1» is not a potential constant expression
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:202:56: ошибка: parse error in template argument list
In file included from /usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comdef.h:169:0,
from qwindowscontext.cpp:80:
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h: В функции-члене «int _com_ptr_t<_IIID>::_CompareUnknown(_InterfacePtr)»:
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:299:49: ошибка: «typeof» не имеет аргументов, зависящих от параметра-шаблона, поэтому должна быть доступна декларация «typeof» [-fpermissive]
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:299:49: ошибка: argument in position «1» is not a potential constant expression
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:299:49: ошибка: parse error in template argument list
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:306:38: ошибка: «typeof» не имеет аргументов, зависящих от параметра-шаблона, поэтому должна быть доступна декларация «typeof» [-fpermissive]
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:306:38: ошибка: argument in position «1» is not a potential constant expression
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:306:38: ошибка: parse error in template argument list
In file included from /usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comdef.h:169:0,
from qwindowscontext.cpp:80:
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h: В функции-члене «long int _com_ptr_t<_IIID>::CreateInstance(const CLSID&, IUnknown*, DWORD)»:
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:202:56: ошибка: «typeof» не имеет аргументов, зависящих от параметра-шаблона, поэтому должна быть доступна декларация «typeof» [-fpermissive]
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:202:56: замечание: (с ключом «-fpermissive», G++ примет данный код, но разрешение использовать недекларированные имена будет отменено в дальнейших версиях)
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:202:56: ошибка: argument in position «1» is not a potential constant expression
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:202:56: ошибка: parse error in template argument list
In file included from /usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comdef.h:169:0,
from qwindowscontext.cpp:80:
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h: В функции-члене «int _com_ptr_t<_IIID>::_CompareUnknown(_InterfacePtr)»:
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:299:49: ошибка: «typeof» не имеет аргументов, зависящих от параметра-шаблона, поэтому должна быть доступна декларация «typeof» [-fpermissive]
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:299:49: ошибка: argument in position «1» is not a potential constant expression
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:299:49: ошибка: parse error in template argument list
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:306:38: ошибка: «typeof» не имеет аргументов, зависящих от параметра-шаблона, поэтому должна быть доступна декларация «typeof» [-fpermissive]
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:306:38: ошибка: argument in position «1» is not a potential constant expression
/usr/lib/gcc/i686-w64-mingw32/4.6/../../../../i686-w64-mingw32/include/comip.h:306:38: ошибка: parse error in template argument list



Что я делаю не так?
  • Вопрос задан
  • 3466 просмотров
Пригласить эксперта
Ответы на вопрос 4
savostin
@savostin
Еще один программист
Попробуйте mxe.
И да, статически не линкуются webkit*
Ответ написан
Комментировать
Demonist
@Demonist
Армянское Радио прав - компилятор слишком древний. На версии MinGW 4.8.2 все скомпилировалось без проблем.
Ответ написан
Комментировать
gbg
@gbg Куратор тега Linux
Любые ответы на любые вопросы
Либо у вас компилятор слишком древний, либо -static мешает.
QT 5.3.2 в динамическом варианте для кросс-компиляции собирается.
Ответ написан
@DancingOnWater
А если при конфигурировании попробовать явно указать, что С++11 не используется?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы