如何让Qt5 ./configure找到我的交叉编译的OpenSSL库?

时间:2013-02-14 19:59:05

标签: cross-compiling qt5 pkg-config mingw-w64

我试图用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标志,但它没有任何区别。

1 个答案:

答案 0 :(得分:3)

在Freenode的#qt频道询问后,我终于找到了可行的解决方案。

我需要将编译器选项直接传递给./configure,而不是试图让pkg-config脚本使用./configure。所以命令看起来像这样:

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

然后,编译器能够找到标头并启用运行时OpenSSL支持。