IOS交叉编译

1.android版本 vqmon已经正常运行,现需要开放IOS版本,作移植工作。

2. 注意事项: 1)ROOT权限,IOS必须越狱。

        2)依赖库:pcap, ffmpeg,libes,  libxml2, libz,

        3) iphone手机越狱,远程ssh登录

3.开放环境:

xcode:6.1.1  mac-mini: 10.1.9  

clang:  Apple LLVM version 5.0 (clang-500.2.76) (based on LLVM 3.3svn)

Target: x86_64-apple-darwin13.3.0
Thread model: posix

SDK:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

 iPhoneOS6.1.sdk

 iPhoneOS7.0.sdk

 iPhoneOS8.1.sdk

选用8.1

4. makefile编写

IOS_BASE_SDK=8.1
IOS_DEPLOY_TGT=7.1
DEVROOT = $(shell xcode-select -p)/Platforms/iPhoneOS.platform/
Developer
SDKROOT = $(DEVROOT)/SDKs/iPhoneOS$(IOS_BASE_SDK).sdk
CC = clang -isysroot ${SDKROOT}
AR = $(DEVROOT)/usr/bin/ar
ARCH = -arch armv7 -arch armv7s -arch arm64 -mios-version-min=7.0
CFLAGS := -g -O0 -I../include XML_INCLUDE=-I/usr/include/libxml2
XML_LIB=-L/usr/lib -lxml2 CFLAGS += -Wall -g -O2 -I ../include -I ../src -I"." -I"/Users/chulk/iosVqmon/data/dependencies/include" -D_GNU_SOURCE
CFLAGS+=$(XML_INCLUDE) LDFLAGS = -lm -lz
LDFLAGS +=-L/usr/lib/
LDFLAGS += $(XML_LIB)
LDFLAGS += ../bin/libmt.a
LDFLAGS += ../bin/libes.a
LDFLAGS += ../bin/libpcap.a
LDFLAGS += ../bin/libffmpeg.a STRIP = strip
RM = /bin/rm -f TARGET = qos all: $(TARGET) SOURCE = tcp.c \
dissector.c \
hash.c \
user_pcap.c \
util.c \
interface.c\
main.c OBJS = $(SOURCE:%.c=obj/%.o) $(TARGET): $(OBJS)
$(CC) $(ARCH) -g $(OBJS) $(LDFLAGS) -o $@
cp -f $(TARGET) ../bin obj/%.o:%.c
@mkdir -p obj
$(CC) $(ARCH) $(CFLAGS) -c $< -o $@ clean:
rm -rf obj $(OBJS) $(TARGET)

$(shell xcode-select -p) 目录是:/Applications/Xcode.app/Contents/Developer

-isysroot ${SDKROOT} 将ROOT目录切换到
${SDKROOT} ,即/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk。后续操作/usr/lib,/usr/include都是相对此目录。   在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/目录下存在多个iPhoneOs的多个版本iPhoneOS6.1.sdk,iPhoneOS7.0.sdk,iPhoneOS8.1.sdk等不同sdk版本。 /Applications/Xcode.app/Contents/Developer/Platforms 下区分不同平台,MacOSX.platform,iPhoneOS.platform,iPhoneSimulator.platform.此处选择iPhoneOS.platform开放平台。 /usr/lib下存在libz.dylib, libxml2.dylib ,libm.dylib 动态库,故可直接调用。pcap, ffmpeg,libes得重新编译! ARCH = -arch armv7 -arch armv7s -arch arm64 -mios-version-min=7.0 -arch指定支持的cpu架构。 -mios-version-min=7.0表示只支持7.0(含)以上的版本系统(iPhoneOS)。


5.编译pcap
  
直接运行build-libpcap.sh 生成iPhoneOS版本。 脚本需要修改版本。
https://github.com/chrisballinger/openvpn-server-ios/blob/master/build-libpcap.sh 6.编译 ffmpeg, es 7注意: make期间出现过 "Unsupported architecture" 错误,是因为pcap的头文件路径不对,指到了系统的其他目录,不匹配,应该指到生成的交叉编译版本。
 

android版本vqmon移植IOS版的更多相关文章

  1. Cocos2d-x 3.4版本 新建项目 IOS版

    打开终端 cd进入cocos2d-x-3.0/tools/cocos2d-console/bin 然后执行下面命令 ./cocos.py new testHuoFei -p com.huofei.ap ...

  2. cocos2dx android版本移植时的Error format not a string literal and no format arguments解决方案

    原文地址 : http://www.cnblogs.com/hhuang2012/p/3336911.html cocos2dx android版本移植时的Error format not a str ...

  3. 基于MT6752/32平台 Android L版本驱动移植步骤

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

  4. 通过微信Android和iOS版,看两大系统的差异

    由于设计师或者产品经理使用的移动设备大部分是iPhone,所以在做设计时,容易忽略Android和iOS的差异,按照自己的使用习惯进行设计,导致大部分设计师或产品经理做出的设计都是基于iOS规范或习惯 ...

  5. 高仿美团iOS版,版本5.7

    高仿美团iOS版,版本:5.7 iOS技术交流群:112365317 github链接:https://github.com/lookingstars/meituan 假设你认为不错.欢迎star 哦 ...

  6. 最简单的基于FFmpeg的移动端样例:Android 视频解码器-单个库版

    ===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...

  7. 微信聊天记录查看器(程序+源码) - iOS版

    本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4338643.html Updates [2016.10.14]感谢 ...

  8. Android版本信息及与Linux和Java的关系

    1.Android与Linux和Java的关系 Android严格来说,不能算是Linux,Android是一个统称,具体来说,是Google用了Linux的一个核心,用这个核心来管理进程,控制硬件. ...

  9. 微信团队原创分享:iOS版微信的内存监控系统技术实践

    本文来自微信开发团队yangyang的技术分享. 一.前言 FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀.对用户而言,表现跟crash一样. ...

随机推荐

  1. c#Winform程序调用app.config文件配置数据库连接字符串

    你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings name="  " connectionString= ...

  2. LDAP 在ubuntu14.04下的安装配置install and configure

    https://help.ubuntu.com/lts/serverguide/openldap-server.html if error occurs in reinstall, try this: ...

  3. 使用QJM实现HDFS的HA配置

    使用QJM实现HDFS的HA配置 1.背景 hadoop 2.0.0之前,namenode存在单点故障问题(SPOF,single point of failure),如果主机或进程不可用时,整个集群 ...

  4. oracle-插入到数据库中为日期

    oracle中创建一个表,其中一个字段为date,当我们进行插入操作 create table xf_allsalestotal ( xf_txdate date not null, xf_store ...

  5. 【CSS古话今说】-- 01.神奇的CSS-BFC在实战中的应用

    文章首发于掘金 BFC(Block Formatting Context)是Web页面中盒模型布局的CSS渲染模式.它的定位体系属于常规文档流. 想要实现一个BFC布局需要满足以下条件之一: 1.fl ...

  6. QR分解与最小二乘(转载自AndyJee)

    转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一. ...

  7. 创建React工程:React工程模板

    这是本人初学React做的学习笔记;讲的不是很深,只算是简单的进行介绍. 这是一个小系列.都是在同一个模板中搭建的,但是代码是不能正常执行的. >>index.js <!DOCTYP ...

  8. Selenium入门8 js调用

    execute_script 可以执行js和jquery脚本 示例如下:修改百度首页的按钮字体颜色,按钮隐藏,按钮显示 #coding=utf-8 # 调用js jquery from seleniu ...

  9. 线程 task pritce

    1.使用task类创建并执行简单任务: 使用task的构造函数来创建 任务,并调用start方法来启动任务,执行异步操作 aitAll用于等待提供的所有 System.Threading.Tasks. ...

  10. c#右键窗体弹出菜单

    在工具箱(快捷键ctrl+w+x)——菜单和工具栏中找到 在属性中用这个绑定 然后写后台代码