Xcode环境下osip,eXosip, openssl的静态库编译方法(编译出来给IOS使用)

本文介绍了如何在Xcode环境下为iOS编译osip2, eXosip2及openssl的静态库。详细步骤包括针对iPhone模拟器和真机的不同配置,以及如何解决编译过程中遇到的问题,如头文件缺失和链接错误。最后,文章还讲解了如何使用lipo命令合并不同架构的静态库。" 82110178,7845117,Python基础教程:数据类型与列表操作详解,"['Python', '基础教程', '数据类型', '字符串操作', '列表操作']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ios版本需要以下静态库的支持:

osip2 eXosip2 openssl。


1.osip2和eXosip2的编译方法:

首先打开终端,进入osip2或者eXoisp的根目录,然后进行详细配置以生成makefile。

具体的参数,可以通过$ ./configure --help 查看“详细”说明

iPhone模拟器:

1.osip2

$ ./configure CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-O2 -m32 -mios-simulator-version-min=5.0 -DPJ_SDK_NAME="\"iPhoneSimulator8.1.sdk\"" -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk" --host=arm-apple-darwin9 --target=arm-apple-darwin9 

在编译eXosip2的时候,可能会遇到链接错误,此时应当把由osip2编译生成的libosip2.a 和 libosipparser2.a拷贝到/usr/local/lib目录;版本要对应好。

编译eXosip2如果遇到诸如找不到头文件的编译错误,就把osip2的include文件夹下的子目录拷贝到eXosip2的include目录下方。

2.eXosip2

$./configure CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-O2 -m32 -mios-simulator-version-min=5.0 -DPJ_SDK_NAME="\"iPhoneSimulator8.1.sdk\"" -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk" LDFLAGS=" -framework MobileCoreServices -framework CFNetwork -framework CoreFoundation" --disable-openssl --host=arm-apple-darwin9 --target=arm-apple-darwin9

iPhone真机:

1.osip2

$ ./configure CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-DPJ_SDK_NAME="\"iPhoneOS8.1.sdk\"" -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk" --host=arm-apple-darwin9 --target=arm-apple-darwin9

2、eXosip2

$ ./configure CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-DPJ_SDK_NAME="\"iPhoneOS8.1.sdk\"" -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk" LDFLAGS=" -framework MobileCoreServices -framework CFNetwork -framework CoreFoundation" --disable-openssl --host=arm-apple-darwin9 --target=arm-apple-darwin9

开始编译:

经过上面的配置,生成make文件后,在执行:

$ make

$ find . -iname "*.a" 找到生成的文件


armv7s, arm64和armv7一样,只是-arch armv7变为-arch armv7s和arm64即可。


合并:

经过前面的工作会分别生成适合模拟器和真机的4种库(模拟器1种i386,真机3种armv7,armv7s,arm64),通过lipo命令可以进行合并,更多细节请google。

2.openssl编译方法:

1.下载OpenSSL源代码库:
http://www.openssl.org/source/
2.分别编译armv7,armv7s和arm64的三个架构的静态库。
armv7的命令是:
执行config文件:
./configure BSD-generic32 --openssldir=/Users/<用户名>/openssl-1.0.1c/新建的armv7目录
修改Makefile:
CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7
CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk

 
armv7s, arm64和armv7一样,只是-arch armv7变为-arch armv7s和arm64即可。

每次编译新一种库都要先清理上次的残留,make clean,但还是会有影响,所以每次都要删除后,解压出新的重新开始。
合并3个版本的库:
lipo -create libarmv7/lib/libssl.a openssl_armv7s/lib/libssl.a libarm64/lib/libssl.a -output libssl.a
lipo -create libarmv7/lib/libcrypto.a openssl_armv7s/lib/libcrypto.a libarm64/lib/libcrypto.a -output libcrypto.a
查看生成的库是否正常:
lipo -info libssl.a 
Architectures in the fat file: libssl.a are: armv7 armv7s arm64
lipo -info libcrypto.a 
Architectures in the fat file: libcrypto.a are: armv7 armv7s arm64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值