这里写自定义目录标题
下载openssl解压
接下来一个个的编译首先
1、windows
perl Configure VC-WIN32 no-shared no-asm zlib --with-zlib-include="C:\zlib\include" --with-zlib-lib="C:\zlib\lib\zlibstatic.lib"
我这个首先编译了zlib,然后目前编译静态库,所以导入的zlib也用静态库好了运行结果良好,不用zlib的可以省略掉zlib和相关选项
F:\SDK\openssl-1.1.1w>perl Configure VC-WIN32 no-shared no-asm zlib --with-zlib-include="C:\zlib\include" --with-zlib-lib="C:\zlib\lib"
Configuring OpenSSL version 1.1.1w (0x1010117fL) for VC-WIN32
Using os-specific seed configuration
Creating configdata.pm
Creating makefile
**********************************************************************
*** ***
*** OpenSSL has been successfully configured ***
*** ***
*** If you encounter a problem while building, please open an ***
*** issue on GitHub <https://github.com/openssl/openssl/issues> ***
*** and include the output from the following command: ***
*** ***
*** perl configdata.pm --dump ***
*** ***
*** (If you are new to OpenSSL, you might want to consult the ***
*** 'Troubleshooting' section in the INSTALL file first) ***
*** ***
**********************************************************************
F:\SDK\openssl-1.1.1w>
配置成功!!!
F:\SDK\openssl-1.1.1w> nmake
nmake 编译,本来想多线程编译,结果找了半天没有找到,chatGPT说不支持那就算了,慢慢摸鱼吧
-I"C:\zlib\include" -c /Fotest\x509_check_cert_pkey_test.obj "test\x509_check_cert_pkey_test.c"
x509_check_cert_pkey_test.c
cl /Zi /Fdapp.pdb /MT /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /I "include" -D"ZLIB" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -I"C:\zlib\include" /Zs /showIncludes "test\x509_check_cert_pkey_test.c" 2>&1 > test\x509_check_cert_pkey_test.d
IF EXIST test\x509_check_cert_pkey_test.exe.manifest DEL /F /Q test\x509_check_cert_pkey_test.exe.manifest
link /nologo /debug /subsystem:console /opt:ref /nologo /debug /out:test\x509_check_cert_pkey_test.exe @C:\Users\HXHP\AppData\Local\Temp\nmCFA3.tmp
IF EXIST test\x509_check_cert_pkey_test.exe.manifest mt -nologo -manifest test\x509_check_cert_pkey_test.exe.manifest -outputresource:test\x509_check_cert_pkey_test.exe
cl /Zi /Fdapp.pdb /MT /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /I "include" -D"ZLIB" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -I"C:\zlib\include" -c /Fotest\x509_dup_cert_test.obj "test\x509_dup_cert_test.c"
x509_dup_cert_test.c
cl /Zi /Fdapp.pdb /MT /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /I "include" -D"ZLIB" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -I"C:\zlib\include" /Zs /showIncludes "test\x509_dup_cert_test.c" 2>&1 > test\x509_dup_cert_test.d
IF EXIST test\x509_dup_cert_test.exe.manifest DEL /F /Q test\x509_dup_cert_test.exe.manifest
link /nologo /debug /subsystem:console /opt:ref /nologo /debug /out:test\x509_dup_cert_test.exe @C:\Users\HXHP\AppData\Local\Temp\nmD66A.tmp
IF EXIST test\x509_dup_cert_test.exe.manifest mt -nologo -manifest test\x509_dup_cert_test.exe.manifest -outputresource:test\x509_dup_cert_test.exe
cl /Zi /Fdapp.pdb /MT /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /I "." /I "include" -D"ZLIB" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -I"C:\zlib\include" -c /Fotest\x509_internal_test.obj "test\x509_internal_test.c"
x509_internal_test.c
cl /Zi /Fdapp.pdb /MT /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /I "." /I "include" -D"ZLIB" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -I"C:\zlib\include" /Zs /showIncludes "test\x509_internal_test.c" 2>&1 > test\x509_internal_test.d
IF EXIST test\x509_internal_test.exe.manifest DEL /F /Q test\x509_internal_test.exe.manifest
link /nologo /debug /subsystem:console /opt:ref /nologo /debug /out:test\x509_internal_test.exe @C:\Users\HXHP\AppData\Local\Temp\nmDB2E.tmp
IF EXIST test\x509_internal_test.exe.manifest mt -nologo -manifest test\x509_internal_test.exe.manifest -outputresource:test\x509_internal_test.exe
cl /Zi /Fdapp.pdb /MT /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /I "include" -D"ZLIB" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -I"C:\zlib\include" -c /Fotest\x509_time_test.obj "test\x509_time_test.c"
x509_time_test.c
cl /Zi /Fdapp.pdb /MT /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /I "include" -D"ZLIB" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -I"C:\zlib\include" /Zs /showIncludes "test\x509_time_test.c" 2>&1 > test\x509_time_test.d
IF EXIST test\x509_time_test.exe.manifest DEL /F /Q test\x509_time_test.exe.manifest
link /nologo /debug /subsystem:console /opt:ref /nologo /debug /out:test\x509_time_test.exe @C:\Users\HXHP\AppData\Local\Temp\nmE04F.tmp
IF EXIST test\x509_time_test.exe.manifest mt -nologo -manifest test\x509_time_test.exe.manifest -outputresource:test\x509_time_test.exe
cl /Zi /Fdapp.pdb /MT /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /I "include" -D"ZLIB" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -I"C:\zlib\include" -c /Fotest\x509aux.obj "test\x509aux.c"
x509aux.c
cl /Zi /Fdapp.pdb /MT /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /I "include" -D"ZLIB" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -I"C:\zlib\include" /Zs /showIncludes "test\x509aux.c" 2>&1 > test\x509aux.d
IF EXIST test\x509aux.exe.manifest DEL /F /Q test\x509aux.exe.manifest
link /nologo /debug /subsystem:console /opt:ref /nologo /debug /out:test\x509aux.exe @C:\Users\HXHP\AppData\Local\Temp\nmE513.tmp
IF EXIST test\x509aux.exe.manifest mt -nologo -manifest test\x509aux.exe.manifest -outputresource:test\x509aux.exe
"C:\Strawberry\perl\bin\perl.exe" "-I." -Mconfigdata "util\dofile.pl" "-omakefile" "apps\CA.pl.in" > "apps\CA.pl"
"C:\Strawberry\perl\bin\perl.exe" "-I." -Mconfigdata "util\dofile.pl" "-omakefile" "apps\tsget.in" > "apps\tsget.pl"
"C:\Strawberry\perl\bin\perl.exe" "-I." -Mconfigdata "util\dofile.pl" "-omakefile" "tools\c_rehash.in" > "tools\c_rehash.pl"
F:\SDK\openssl-1.1.1w>
F:\SDK\openssl-1.1.1w>
编译结束 摸鱼也结束了,然后安装
管理员运行
F:\SDK\openssl-1.1.1w> nmake install
安装完成
C:\Program Files (x86)\OpenSSL\html\man5\config.html
C:\Program Files (x86)\OpenSSL\html\man5\x509v3_config.html
C:\Program Files (x86)\OpenSSL\html\man7\bio.html
C:\Program Files (x86)\OpenSSL\html\man7\crypto.html
C:\Program Files (x86)\OpenSSL\html\man7\ct.html
C:\Program Files (x86)\OpenSSL\html\man7\des_modes.html
C:\Program Files (x86)\OpenSSL\html\man7\Ed25519.html
C:\Program Files (x86)\OpenSSL\html\man7\Ed448.html -> C:\Program Files (x86)\OpenSSL\html\man7\Ed25519.html
C:\Program Files (x86)\OpenSSL\html\man7\evp.html
C:\Program Files (x86)\OpenSSL\html\man7\ossl_store-file.html
C:\Program Files (x86)\OpenSSL\html\man7\ossl_store.html
C:\Program Files (x86)\OpenSSL\html\man7\passphrase-encoding.html
C:\Program Files (x86)\OpenSSL\html\man7\proxy-certificates.html
C:\Program Files (x86)\OpenSSL\html\man7\RAND.html
C:\Program Files (x86)\OpenSSL\html\man7\RAND_DRBG.html
C:\Program Files (x86)\OpenSSL\html\man7\RSA-PSS.html
C:\Program Files (x86)\OpenSSL\html\man7\scrypt.html
C:\Program Files (x86)\OpenSSL\html\man7\SM2.html
C:\Program Files (x86)\OpenSSL\html\man7\ssl.html
C:\Program Files (x86)\OpenSSL\html\man7\X25519.html
C:\Program Files (x86)\OpenSSL\html\man7\X448.html -> C:\Program Files (x86)\OpenSSL\html\man7\X25519.html
C:\Program Files (x86)\OpenSSL\html\man7\x509.html
F:\SDK\openssl-1.1.1w>
2、 android编译,直接搞一个shell文件,跑一下就行(一下macos上测试通过)
# b_android_arm64.sh
# 设置 NDK 位置 对应修改
export ANDROID_NDK_ROOT=/Users/luzz/Library/Android/sdk/ndk/23.1.7779620
# 设置版本
PLATFORM_VERSION=23
# 设置NDK的路径(根据宿主机的不同设置不一样)
PLANTFORM_x86_64_NAME=darwin-x86_64
# 安装路径
INSTALL_PATH=/Users/luzz/china_etax_out/arm64
make clean
# export ANDROID_NDK_ROOT=/home/whoever/Android/android-sdk/ndk/20.0.5594570
PATH=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$PLANTFORM_x86_64_NAME/bin:$PATH
./Configure android-arm64 no-shared no-asm zlib -D__ANDROID_API__=$PLATFORM_VERSION --with-zlib-include=../out/android/arm64-v8a/include --with-zlib-lib=../out/android/arm64-v8a/lib --prefix=$INSTALL_PATH
make -j16
make install
就 很愉快的成功了
接下来编译一个armv7a的版本:
# b_android_armv7a.sh
# 设置 NDK 位置
export ANDROID_NDK_ROOT=/Users/luzz/Library/Android/sdk/ndk/23.1.7779620
# 设置版本
PLATFORM_VERSION=23
# 设置NDK的路径(根据宿主机的不同设置不一样)
PLANTFORM_x86_64_NAME=darwin-x86_64
# 安装路径
INSTALL_PATH=/Users/luzz/china_etax_out/arm
make clean
PATH=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$PLANTFORM_x86_64_NAME/bin:$PATH
./Configure android-arm no-shared no-asm zlib -D__ANDROID_API__=$PLATFORM_VERSION --with-zlib-include=../out/android/armeabi-v7a/include --with-zlib-lib=../out/android/armeabi-v7a/lib --prefix=$INSTALL_PATH || exit 1
make -j16
make install
3、ios编译
一样的 configer中设置 ios64-cross 然后设置zlib支持进行configer
#!/bin/bash
set -x
TMP_DIR=/Users/luzz/china_etax_out/ios
CROSS_TOP_SIM="`xcode-select --print-path`/Platforms/iPhoneSimulator.platform/Developer"
CROSS_SDK_SIM="iPhoneSimulator.sdk"
CROSS_TOP_IOS="`xcode-select --print-path`/Platforms/iPhoneOS.platform/Developer"
CROSS_SDK_IOS="iPhoneOS.sdk"
export CROSS_COMPILE=`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/
function build_for ()
{
PLATFORM=$1
ARCH=$2
CROSS_TOP_ENV=CROSS_TOP_$3
CROSS_SDK_ENV=CROSS_SDK_$3
make clean
export CROSS_TOP="${!CROSS_TOP_ENV}"
export CROSS_SDK="${!CROSS_SDK_ENV}"
./Configure $PLATFORM "-arch $ARCH " no-unit-test no-asm no-shared zlib --prefix=${TMP_DIR}/${ARCH} || exit 1
# problem of concurrent build; make -j8
make -j16 && make install_sw || exit 2
unset CROSS_TOP
unset CROSS_SDK
}
build_for ios64-cross arm64 IOS || exit
(可选)依赖zlib的编译,android cmake编译样例
以上所有编译除了ios其他都需要zlib的支持,如果没有 先编译zlib,zlib编译的时候,直接cmake就行了,举个android的例子
#/bin/bash
# 请指定 Android NDK路径
export ANDROID_NDK=/Users/luzz/Library/Android/sdk/ndk/23.1.7779620
rm -r build
mkdir build && cd build
# export ANDROID_ABI_SET="arm64-v8a"
# export DLL_INSTALL_PATH=/Users/luzz/china_etax_out/arm64
export ANDROID_ABI_SET="armeabi-v7a"
export DLL_INSTALL_PATH=/Users/luzz/china_etax_out/armv7a
# ANDROID_ABI 可以选择使用 armeabi-v7a 和 arm64-v8a
# armeabi-v7a
# arm64-v8a
# x86
# x86_64
make clean
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=$DLL_INSTALL_PATH \
-DANDROID_ABI=$ANDROID_ABI_SET \
-DANDROID_NDK=$ANDROID_NDK \
-DANDROID_PLATFORM=android-23 \
..
make -j16
make install