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

来源:互联网 发布:淘宝店导航在线制作 编辑:程序博客网 时间:2024/04/29 07:49

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

0 0
原创粉丝点击