android版本vqmon移植IOS版
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版的更多相关文章
- Cocos2d-x 3.4版本 新建项目 IOS版
打开终端 cd进入cocos2d-x-3.0/tools/cocos2d-console/bin 然后执行下面命令 ./cocos.py new testHuoFei -p com.huofei.ap ...
- 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 ...
- 基于MT6752/32平台 Android L版本驱动移植步骤
基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...
- 通过微信Android和iOS版,看两大系统的差异
由于设计师或者产品经理使用的移动设备大部分是iPhone,所以在做设计时,容易忽略Android和iOS的差异,按照自己的使用习惯进行设计,导致大部分设计师或产品经理做出的设计都是基于iOS规范或习惯 ...
- 高仿美团iOS版,版本5.7
高仿美团iOS版,版本:5.7 iOS技术交流群:112365317 github链接:https://github.com/lookingstars/meituan 假设你认为不错.欢迎star 哦 ...
- 最简单的基于FFmpeg的移动端样例:Android 视频解码器-单个库版
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- 微信聊天记录查看器(程序+源码) - iOS版
本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4338643.html Updates [2016.10.14]感谢 ...
- Android版本信息及与Linux和Java的关系
1.Android与Linux和Java的关系 Android严格来说,不能算是Linux,Android是一个统称,具体来说,是Google用了Linux的一个核心,用这个核心来管理进程,控制硬件. ...
- 微信团队原创分享:iOS版微信的内存监控系统技术实践
本文来自微信开发团队yangyang的技术分享. 一.前言 FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀.对用户而言,表现跟crash一样. ...
随机推荐
- Markdown快速上手指南
Markdown快速上手指南 1.Markdown介绍 markdown可以实现快速html文档编辑,格式优没,并且不需要使用html元素. markdown采用普通文本的形式,例如读书笔记等易于使用 ...
- SQL-常用数据类型
整数除了 INT 外,还有 TINYINT.SMALLINT.MEDIUMINT.BIGINT. CHAR 和 VARCHAR 的区别: CHAR 的长度是固定的,而 VARCHAR 的长度是可以变化 ...
- Selenium入门7 内嵌框架iframe
如果网页内嵌iframe,那么iframe里的元素是无法直接定位的,需要使用switch_to.frame进入frame操作: 之后需要再操作页面上非嵌入在iframe里的元素,需要使用switch_ ...
- IOS 拉伸图片(封装)
/** * 根据图片名返回一张能够自由拉伸的图片 */ +(UIImage *)resizedImage:(NSString *)name { UIImage *image=[UIImage imag ...
- 使用extentreports美化testng报告2,增加监听
有兴趣研究了extentreports报告美化插件,但是因为发现插件有很多内容不能自定义,所以放弃了这个插件,我扩充了官方代码的demo,在testng中增加了监听,并打印了一些测试用例,现在我把两个 ...
- Uva 11235 RMQ问题
RMQ: 有一个不变的数组,不停的求一个区间的最小值. 使用倍增的思想优化到logN; d(i,j) 表示从 i 开始的,长度为2j的一段元素中的最小值. 那么状态转移方程: d(i,j) = min ...
- OC#import和#include的异同
1.#import和#include相同1.1都可以用在OC程序中起到导入文件的作用1.2同样的 包含系统文件都是<>,是包本地文件都用""例如:系统文件#import ...
- 实际案例告诉你为什么Oracle不建议使用varchar2来存时间数据
问题现象2015年9月客户系统中一条高逻辑读的SQL语句,在业务高峰期执行频率较高,导致系统逻辑读居高不下,同时带高了系统CPU,SQL语句主体部分如下 SELECT /* ^^*/ COUNT(DI ...
- java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数
File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...
- Latex 使用笔记,取消目录
不使用标准模板(如ieee或者acm的模板)的前提下: \usepackage{hyperref} \hypersetup{bookmarks={false}} 或者 \usepackage[book ...