博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Xcode环境下osip,eXosip, openssl的静态库编译方法(编译出来给IOS使用)
阅读量:4183 次
发布时间:2019-05-26

本文共 2417 字,大约阅读时间需要 8 分钟。

1.osip2和eXosip2的编译方法:

首先打开终端,进入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。

2.openssl编译方法:

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/

你可能感兴趣的文章
如何建立svn版本库并运行它
查看>>
如何合并svn分支到主干上
查看>>
libusb源码学习:list_entry
查看>>
libusb源码学习:几个函数加载的宏(windows)
查看>>
MCU_如何通过硬件VID 查找生产厂家
查看>>
NCNN部署例程 mxnet-gluoncv之simple_pose
查看>>
Ubuntu18.04查看显卡信息并安装NVDIA显卡驱动driver + Cuda + Cudnn
查看>>
电子元件二极管封装SMA,SMB,SMC的区别
查看>>
利用FFmpeg玩转Android视频录制与压缩(二)
查看>>
eclipse下生成Java类图和时序图,生成UML图
查看>>
M文件程序设计(matlab)
查看>>
matlab基础知识
查看>>
程序员的职业素养
查看>>
一道面试题深入了解java底层
查看>>
java下载附件
查看>>
cron表达式每个月最后一天
查看>>
Oracle中Like与Instr模糊查询性能大比拼
查看>>
Spring Boot入门===Hello World
查看>>
spring boot应用启动原理分析
查看>>
使用spring的好处
查看>>