2013-02-14 4 views
1

Я пытаюсь перекрестно скомпилировать Qt5 с 32-битным компилятором Mingw-w64. Хост-платформа - 64-битная Ubuntu 12.10, а целевая платформа - 32-разрядная Windows. Мне удалось перекрестно скомпилировать библиотеку OpenSSL и установить кросс-скомпилированные двоичные файлы/библиотеки/включает в себя: ~/i686-w64-mingw32.Как получить Qt5 ./configure, чтобы найти мои кросс-скомпилированные библиотеки OpenSSL?

Проблема возникает, когда я пытаюсь настроить Qt. Я использую следующую команду:

PKG_CONFIG_PATH=~/i686-w64-mingw32/lib/pkgconfig ./configure -prefix \ 
    ~/i686-w64-mingw32 -opensource -confirm-license -release -nomake demos \ 
    -nomake examples -xplatform win32-g++ -device-option \ 
    CROSS_COMPILE=i686-w64-mingw32-

qmake двоичные успешно компилирует для принимающей платформы, а также список всех разрешенных функций отображаются:

... 
ODBC support ........... plugin 
SQLite support ......... plugin (qt) 
OpenSSL support ........ no

Что здесь происходит? Кажется, что Qt каким-то образом не может найти OpenSSL. Включение флага -v в процессе настройки подтверждает это - я получаю некоторую ошибку в том, что не могу найти openssl/opensslv.h.

Таким образом, мой следующий шаг должен был подтвердить, что pkg-config действительно работает:

PKG_CONFIG_PATH=~/i686-w64-mingw32/lib/pkgconfig pkg-config --libs openssl

И оказалось:

-L/home/nathan/i686-w64-mingw32/lib -lssl -lcrypto

Так как я могу убедить Qt, что у меня есть библиотеки OpenSSL доступны? Я пробовал флаг -force-pkg-config, но это не имело значения.

ответ

3

После запроса в канале #qt на Freenode я смог наконец найти рабочее решение.

Вместо того, чтобы использовать сценарий ./configure для использования pkg-config, мне нужно было передать параметры компилятора непосредственно на ./configure. Таким образом, команда выглядит так:

./configure <...> -I~/i686-w64-mingw32/include

Компилятор затем смог найти заголовки и включить поддержку OpenSSL во время выполнения.