我试图用Mingw-w64的32位编译器交叉编译Qt5。主机平台是64位的Ubuntu 12.10,目标平台是32位Windows。我设法交叉编译OpenSSL库并将交叉编译的二进制文件/库/包安装到~/i686-w64-mingw32
。
当我尝试配置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
标志,但它没有任何区别。
答案 0 :(得分:3)
在Freenode的#qt
频道询问后,我终于找到了可行的解决方案。
我需要将编译器选项直接传递给./configure
,而不是试图让pkg-config
脚本使用./configure
。所以命令看起来像这样:
./configure <...> -I~/i686-w64-mingw32/include
然后,编译器能够找到标头并启用运行时OpenSSL支持。