xcode编译OpenSSL

1、下载openssl源码:https://www.openssl.org/source/

目前我选择的稳定版本为:openssl-1.1.1k

2、修改IOS部分的编译指令

首先需要修改Configurations/15-ios.conf配置文件,这个配置文件里面的target是基于10-main.conf的。修改如下:

# 新增
    "iossimulator-cross" => {
        inherit_from     => [ "iossimulator-xcrun" ],
        cflags           => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK)"),
    },

3、编译 模拟器使用的

export CC="clang"
export CROSS_TOP="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer"
export CROSS_SDK="iPhoneSimulator.sdk"
./Configure iossimulator-cross # x86_64
make

编译完成后,会在当前目录下生成libcrypto.a、libssl.a文件,将这两个文件备份,为以后合并静态库使用。

你可以通过如下命令,查看这两个静态库所支持的平台架构。

lipo -info libcrypto.a

输出:Non-fat file: libcrypto.a is architecture: x86_64

lipo -info libssl.a

输出:Non-fat file: libssl.a is architecture: x86_64

4、编译armv7平台

清理编译后的目录文件,继续编译

export CC="clang"
export CROSS_TOP="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer"
export CROSS_SDK="iPhoneOS.sdk"
./Configure ios-cross # armv7
make

5、编译arm64平台

清理编译后的目录文件,继续编译

export CC="clang"
export CROSS_TOP="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer"
export CROSS_SDK="iPhoneOS.sdk"
./Configure ios64-cross # arm64
make

6、合并库

合并静态库:

lipo -create iossimulator-x86_64/libcrypto.a ios-armv7/libcrypto.a ios-arm64/libcrypto.a -o libcrypto.a

lipo -create iossimulator-x86_64/libcrypto.dylib ios-armv7/libcrypto.dylib ios-arm64/libcrypto.dylib -o libcrypto.dylib

lipo -create iossimulator-x86_64/libssl.a ios-armv7/libssl.a ios-arm64/libssl.a -o libssl.a

lipo -create iossimulator-x86_64/libssl.dylib ios-armv7/libssl.dylib ios-arm64/libssl.dylib -o libssl.dylib

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在C/C++分类目录。将固定链接加入收藏夹。