在我的Windows 7虛擬機上編譯openssl-1.1.0e已經很艱難。在Windows上使用msys2編譯openssl-1.1.0e
首先,使用msys2 shell中的以下命令打包一些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
老實說我很茫然。有什麼想法嗎?
爲什麼不使用Pacman只安裝OpenSSL的?如果你真的想自己構建它,你應該使用[官方MSYS2 openssl PKGBUILD腳本](https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-openssl)作爲起點。 –