本文共 2417 字,大约阅读时间需要 8 分钟。
首先打开终端,进入osip2或者eXoisp的根目录,然后进行详细配置以生成makefile。
具体的参数,可以通过$ ./configure --help 查看“详细”说明
iPhone模拟器:
1.osip2
$ ./configure CC=/Applications/ CFLAGS="-O2 -m32 -mios-simulator-version-min=5.0 -DPJ_SDK_NAME="\"iPhoneSimulator8.1.sdk\"" -arch i386 -isysroot /Applications/" --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/ CFLAGS="-O2 -m32 -mios-simulator-version-min=5.0 -DPJ_SDK_NAME="\"iPhoneSimulator8.1.sdk\"" -arch i386 -isysroot /Applications/" LDFLAGS=" -framework MobileCoreServices -framework CFNetwork -framework CoreFoundation" --disable-openssl --host=arm-apple-darwin9 --target=arm-apple-darwin9
iPhone真机:
1.osip2
$ ./configure CC=/Applications/ CFLAGS="-DPJ_SDK_NAME="\"iPhoneOS8.1.sdk\"" -arch armv7 -isysroot /Applications/" --host=arm-apple-darwin9 --target=arm-apple-darwin9
2、eXosip2
$ ./configure CC=/Applications/ CFLAGS="-DPJ_SDK_NAME="\"iPhoneOS8.1.sdk\"" -arch armv7 -isysroot /Applications/" 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。
1.下载OpenSSL源代码库:
2.分别编译armv7,armv7s和arm64的三个架构的静态库。 armv7的命令是: 执行config文件: ./configure BSD-generic32 --openssldir=/Users/<用户名>/openssl-1.0.1c/新建的armv7目录 修改Makefile: CC=/Applications/ -arch armv7 CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Applications/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转载地址:http://ofzoi.baihongyu.com/