openssl 1.1.1编译windows, ios, android 三个版本跨平台编译

下载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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值