1

我用mingw成功编译了win32下的OpenSSL 1.0.1。现在我正在尝试使用以下配置编译静态 Qt 4.8.1:

configure -release -static -qt-zlib -nomake examples -nomake demos -no-qt3support -no-scripttools -no-opengl -no-webkit -no-phonon -no-style-motif -no-style-cde -no-style-cleanlooks -no-style-plastique -no-sql-sqlite -openssl-linked OPENSSL_LIBS="-lssl -lcrypto -lgdi32 -luser32" -I H:\Workplace\OpenSSL\include -L H:\Workplace\OpenSSL

我得到了这些错误:

H:\Workplace\OpenSSL/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x17be): undefined ref erence to '_time32'(几次)

H:\Workplace\OpenSSL/libcrypto.a(o_time.o):o_time.c:(.text+0x362): undefined ref erence to '_gmtime32'

H:\Workplace\OpenSSL/libcrypto.a(mem_dbg.o):mem_dbg.c:(.text+0x4c7): undefined r eference to '_localtime32'

已解决(见下文)

4

2 回答 2

2

最后我解决了所有问题,这里是使用TDM-GCC使用静态 OpenSSL编译静态 Qt的完整解决方案。

  • 下载最新 OpenSSL 的源代码并解压缩它们。

  • 我使用TDM-GCC编译,所以下载安装。

  • 安装 MSYS。

  • 创建../MsysInstallDir/etc/fstab具有以下内容的文件:

MyPathToMinGW /mingw(如果您使用 tdm-gcc,则需要)

MyPathToPerl /perl(perl也需要安装)

  • 要编译 OpenSSL,请在 OpenSSL 源文件夹(在 MSYS 中)中运行以下命令:

./config

make

  • 下载 qt-everywhere(我使用 v.4.8.1)源并解压缩它们。

更新:最近我在另一台 windows7 计算机上构建了 4.8.2 并得到了编译错误(在构建我的应用程序时):«找不到 -lQtCore4»,«找不到 -lQtGui4»。这是帮助我的解决方案 - 编辑文件“qt-sources-dir/mkspecs/win32-g++/qmake.conf”。放QMAKE_LFLAGS = -static -static-libgcc

  • 使用配置在 qt 源目录中创建 conf.bat 文件:

configure -release -static -qt-zlib -nomake examples -nomake demos -no-qt3support -no-scripttools -no-opengl -no-webkit -no-phonon -no-style-motif -no-style-cde -no-sql-sqlite -openssl OPENSSL_LIBS="-lssl -lcrypto -lgdi32 -luser32" -I MyOpenSSLdir\include -L MyOpenSSLdir

  • 运行cmdmingwvars.bat在mingw文件夹中运行。在 qt 源文件夹中运行conf.bat(或将源文件夹添加到 PATH 并从另一个目录运行它,以将安装与源分开)。编译 Qt 需要几个小时。

  • 添加到项目的 .pro 文件中:INCLUDEPATH += OpenSSLdir/include/

我认为这可能对某人有所帮助。

于 2012-04-17T13:49:15.197 回答
1

你确定你需要-openssl-linked?我们总是通过动态使用 openssl 来构建 Qt。(-openssl)

于 2012-04-16T07:04:58.397 回答