2012-04-16 24 views
1

mingwでwin32でOpenSSL 1.0.1を正常にコンパイルしました。openSSLエラーで静的なQtをコンパイル

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'

:私はこれらのエラーを得た

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

:今、私は、次の設定ではQt 4.8.1静的コンパイルしようとしています

ソルベッド(ベルow)

答えて

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-どこでもダウンロードしてください(私はv.4.8.1を使用)ソース、それらを解凍します。

UPDATE:最近、私は別のWindows7のコンピュータ上で4.8.2を構築し、(私のアプリを構築しながら)エラーをコンパイルしました:«-lQtCore4見つけることができません»を、«-lQtGui4見つけることができません»を。ここで私を助けた解決策は - ファイル "qt-sources-dir/mkspecs/win32-g ++/qmake.conf"を編集することです。セットQMAKE_LFLAGS = -static -static-libgcc

  • 作成conf。設定とqtのソースディレクトリにある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

  • 実行cmd。 mingwフォルダにmingwvars.batを実行してください。 qtソースフォルダーにconf.batを実行します(または、ソースフォルダーをPATHに追加し、別のディレクトリーから実行して、ソースからインストールを分離します)。 Qtをコンパイルするのに数時間かかるでしょう。私はそれが誰かを助けるかもしれないと思うINCLUDEPATH += OpenSSLdir/include/

  • は、プロジェクトの.PROファイルに追加します。

  • 1

    -openssl-linkedが必要ですか?私たちは常にopensslを動的に使用してQtをビルドします。 (-openssl)

    +0

    はい、私はそれが必要です。私はlibeayとlibsslに依存せずに私の.exeを持っていたい。 – Eddie

    +0

    私はそれを試してみるべきですが、それ以前に私はインストールされたopensslでqtをコンパイルしようとしましたが、現在はmingw .. – Eddie

    +1

    でコンパイルされています。-openssl-linked opensslが必要で、アプリケーションはそれなしでは起動しません。しかし、もしあなたが-opensslフラグを使うならば - qtはopenssl synamicalyをロードしようとしますが、ロードできないならそれは全く使わない(この場合はアプリケーションは動くが、例えばsslソケットを使うならば)仕事はしません)。 – PSyton

    関連する問題