2017-05-22 18 views
0

私のWindows 7 VMでopenssl-1.1.0eをコンパイルするのは懐かしい道でした。msys2を使用してWindows上でopenssl-1.1.0eをコンパイルする

まず、msys2シェル内から次のコマンドを実行するmsys2パッケージもあります。

pacman -S make gcc perl 

ソースは、で構成されました。

./Configure mingw 

次に、

make depend && make 

ファイルに問題があります。

crypto/init.c 
crypto/dso/dso_win32.c 

両方とも、Windowsの機能について不平を言った。追加する。

#include <windows.h> 

他のものとの両方には、この問題が含まれています。

現在、残念ながら、もう少し不平を言っています。現在、インターネット上には何も役立つものはありません。ここに重要なことがあります。

make[2]: Entering directory '/builds/openssl-1.1.0e' 
perl ./util/mkrc.pl libcrypto-1_1.dll | windres --target=pe-i386 -o rc.o 
LD_LIBRARY_PATH=: gcc -DOPENSSL_USE_APPLINK -DDSO_WIN32 -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="/usr/local/ssl" -DENGINESDIR="/usr/local/lib/engines-1_1" -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE -m32 -Wall -O3 -fomit-frame-pointer -D_MT -D_WINDLL -static-libgcc -shared -Wl,-Bsymbolic -Wl,--out-implib,libcrypto.dll.a crypto.def rc.o -o ./libcrypto-1_1.dll -Wl,--whole-archive ./libcrypto.a -Wl,--no-whole-archive -lws2_32 -lgdi32 -lcrypt32 
Cannot export RAND_event: symbol not defined 
Cannot export RAND_screen: symbol not defined 
./libcrypto.a(uplink.o):uplink.c:(.text+0x5e): undefined reference to `_sntprintf' 
./libcrypto.a(uplink.o):uplink.c:(.text+0x75): undefined reference to `_tcscpy' 
./libcrypto.a(uplink.o):uplink.c:(.text+0xcd): undefined reference to `_tcscpy' 
./libcrypto.a(uplink.o):uplink.c:(.text+0x14e): undefined reference to `_tcscpy' 
./libcrypto.a(uplink.o):uplink.c:(.text+0x179): undefined reference to `_tcscpy' 
collect2: error: ld returned 1 exit status 
make[2]: *** [Makefile.shared:296: link_shlib.mingw] Error 1 
make[2]: Leaving directory '/builds/openssl-1.1.0e' 
make[1]: *** [Makefile:725: libcrypto.dll.a] Error 2 
make[1]: Leaving directory '/builds/openssl-1.1.0e' 
make: *** [Makefile:128: all] Error 2 

正直に私は迷っています。何かご意見は?

+0

を?本当に自分で構築したいのであれば、[公式MSYS2 openssl PKGBUILDスクリプト](https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-openssl)を出発点として使用する必要があります。 –

答えて

1

mingw/msys2と連携させるためにOpenSSLソースを変更する必要はありません。そのような変更がなくてもうまくコンパイルできます。あなたの問題はほぼ確実に環境に影響します。 OpenSSLソースのクリーンなコピーを入手し、以下のことを確認してください。

ご質問の中で、msys2 gccがインストールされていることにご注意ください。これはおそらくあなたの問題の原因です。 mingwビルドを行う全ポイントは、mingwコンパイラを使用してネイティブのWindows実行ファイル/ライブラリを生成することです。 mingwコンパイラがmsys2コンパイラの前にあなたのパスに現れていることを確認してください(msys2 gccパッケージを削除したいだけかもしれません)。

2つ目は、Configureスクリプトのmingwターゲットが2つあります。mingwとmingw64です。正しいものを使用していることを確認し、使用しているmingwコンパイラのバージョンと一致することを確認する必要があります。

もう1つ確認するのはあなたのperlのバージョンです。時には、あなたのPATHに依存して、msys2 perlをインストールしていても間違ったバージョンのperlを拾うことができます。 msys2インスタンスの前にPATH上に別のバージョンのperlが存在すると、状況が悪くなる可能性があります。あなたのmsys2シェルからperl -vを実行し、それがこのようなものに見えることを確認してください:なぜちょうどパックマンを使用してOpenSSLをインストールしない

This is perl 5, version 22, subversion 1 (v5.22.1) built for x86_64-msys-thread-multi

関連する問題