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
- Xcode环境下osip,eXosip, openssl的静态库编译方法(编译出来给IOS使用)
- Xcode环境下osip,eXosip, openssl的静态库编译方法(编译出来给IOS使用)
- osip和exosip在windows下的编译静态库
- osip和exosip在windows下的编译静态库
- Visual Studio 2010下编译osip及eXosip并搭建开发环境的方法
- Visual Studio 2010下编译osip及eXosip并搭建开发环境的方法
- Visual Studio 2010下编译osip及eXosip并搭建开发环境的方法
- osip及eXosip的编译方法
- windows 下 osip 3.5 和 exosip 3.5 库的编译
- Windows下编译eXosip、osip
- osip及eXosip的编译及开发方法
- osip及eXosip的编译及开发方法
- vs2008编译osip/eXosip
- Linux、arm-linux下编译osip exosip
- 在VC6.0下编译osip、exosip协议栈的方法
- 在VC6.0下编译osip、exosip协议栈的方法
- eXosip入门(一):vs2008编译osip/eXosip
- Windows下编译eXosip、osip(成功编译2-3.6)
- android笔记(2)
- 多次密码错误,冻结登录
- Java并发编程:Thread类的使用
- 2016.4.21计软信工招聘会面试心得
- 深复制的体验
- Xcode环境下osip,eXosip, openssl的静态库编译方法(编译出来给IOS使用)
- 4.内存管理
- Java的同步容器和并发容器
- UIButton 文字在左,icon在右的办法
- 【原创】docker源码分析(4)---execdriver
- 使用ppa安装code::blocks16.01
- 堆内存和栈内存详解(转载)
- storm
- Java并发编程:synchronized