转自https://www.h4ck.org.cn/2013/07/theos-makefile/
theos的makefile写法与其他linux/unix环境下的makefile写法大同小异,但是对于makefile不熟悉的在导入一些dylib或者framework的时候就会变得很蛋疼。
对于framework可以直接通过Frameworks和private frameworks来导入,但是dylib文件却不能那么简单的写进去,如果要引用zlib,那么如果写成xxx_LDFLAGS = -zlib,虽然在编译的时候不会提示找不到对应的lib库但是却会提示找不到相关的符号。
这个东西的写法比较蛋疼,例如要调用libz.1.2.5.dylib ,那么写法是去掉前面的lib和最后的.dylib,然后将剩余部分拼到-l后面也就是上图中看到的那个样子:
详细信息可以参考这个页面:https://github.com/DHowett/theos/issues/15
一个makefile模板:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
#
# Use this makefile to compile service project.
# When change SDK or add new files ,re-edit values below.
# zhj
# 2012-07-17
# txtw
#
export THEOS=/opt/theos/
export SDKVERSION=5.1
export THEOS_DEVICE_IP=10.0.2.3
#192.168.1.157
#10.0.2.2
export CURRENT_VERSION = 1104
include theos/makefiles/common.mk
TWEAK_NAME = service
RESOURCE_DIR = Resources
DEBUG = 1
#SUBPROJECTS=servicePreferences
#编译单元
#
#
#编译 ----------------------------ASIHTTPRequest--------------------
service_FILES += ASIHTTPRequest/ASIAuthenticationDialog.m
service_FILES += ASIHTTPRequest/ASIDownloadCache.m
service_FILES += ASIHTTPRequest/ASIFormDataRequest.m
service_FILES += ASIHTTPRequest/ASIHTTPRequest.m
service_FILES += ASIHTTPRequest/ASIInputStream.m
service_FILES += ASIHTTPRequest/ASINetworkQueue.m
service_FILES += ASIHTTPRequest/Reachability.m
#编译 ----------------------------Encoder---------------------------
service_FILES += Encoder/CrypHelper.m
service_FILES += Encoder/GTMBase64.m
service_FILES += Encoder/NSData+Base64.m
service_FILES += Encoder/NSString+MD5Addition.m
service_FILES += Encoder/UIDevice+IdentifierAddition.m
#编译 ----------------------------TBXML-----------------------------
service_FILES += TBXML/NSDataAdditions.m
service_FILES += TBXML/TBXML.m
#编译 ----------------------------Regex-----------------------------
service_FILES += Regex/RegexKitLite.m
#编译 ----------------------------Constant--------------------------
service_FILES += Constant/Constant.m
service_FILES += Constant/UserDefaults.m
#编译 ----------------------------SOAP-----------------------------
service_FILES += SOAP/Head.m
service_FILES += SOAP/Body.m
#编译 ----------------------------MsgService-----------------------------
service_FILES += MsgService/MsgService.m
service_FILES += MsgService/MessageInfo.m
service_FILES += MsgService/Msgs/NetBrain.m
service_FILES += MsgService/Msgs/KeepAliveReturnMsg.m
service_FILES += MsgService/Msgs/DevBindReturnMsg.m
service_FILES += MsgService/Msgs/FamilyPhoneMsg.m
service_FILES += MsgService/Msgs/LocationMsg.m
#编译 ----------------------------ParseXML-----------------------------
service_FILES += ParseXML/ParseXML.m
#编译 ----------------------------Command---------------------------------
service_FILES += Command/TxtwCommand.m
#编译 ----------------------------BaiduMap---------------------------------
service_FILES += BaiduMap/MapPointAnnotion.m
#编译 ----------------------------service-----------------------------
service_FILES += service/service.mm
service_FILES += Tweak.xm
#连接单元
#
#连接 ----------------------------framework--------------------------
service_FRAMEWORKS = Foundation UIKit QuartzCore Foundation CoreFoundation CoreGraphics MobileCoreServices
service_FRAMEWORKS += SystemConfiguration CFNetwork CoreTelephony CoreLocation MapKit
#连接 ----------------------------dylib------------------------------
service_LDFLAGS = -lxml2 -lz -licucore -lgcc -lgcc_eh -lstdc++
service_LDFLAGS += -L./BaiduMap/inc -R./BaiduMap/inc/ -lbaidumapapi
#编译器 ----------------------------------------------------------
#service_CFLAGS += -std=c99
#service_CFLAGS += -all_load
#资源文件 ----------------------------------------------------------
internal-package::
ifneq ($(wildcard $(RESOURCE_DIR)/*.png), )
mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
cp $(RESOURCE_DIR)/*.png $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)/
endif
ifneq ($(wildcard $(RESOURCE_DIR)/*.lproj), )
mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
rsync -avC $(RESOURCE_DIR)/*.lproj $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
endif
ifneq ($(wildcard $(RESOURCE_DIR)/$(TWEAK_NAME).plist), )
mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
cp $(RESOURCE_DIR)/$(TWEAK_NAME).plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
endif
include $(THEOS_MAKE_PATH)/tweak.mk
|
注释:
1
2
3
4
5
6
7
8
9
10
11
|
9~14行属于系统配置部分:其中11行是调试设备的IP地址
16行是引入常用的一般模板
18行工程名称
20行存放资源文件的本地目录名称:可以自定义 主要是在生成包拷贝时使用
22行是否是调试状态:常用的一个宏设置是否显示NSLog 区分是debug还是release 也可以自己尝试设置其他宏变量
26~83行是编译所需要的的源文件
88~90行是sdk中的framework
93~95行是需要的一些系统静态库和第三方静态库
97~99行是编译器参数设置
101~114行是拷贝资源文件
116行是引入tweak模板
|
参考链接:
https://github.com/DHowett/theos/issues/15
http://www.cnblogs.com/qiezi/archive/2012/09/29/2708726.html
https://github.com/DHowett/theos
- theos初探:ios越狱开发教程
开发环境搭建回顾 现在已经在windows上安装好了theos了.在上一篇中都已经讲了,开发环境主要部件就是: 1.theos,主要包含了使用make时的makefile模板文件.包含了各种库和框架的 ...
- theos的makefile写法
theos的makefile写法与其他linux/unix环境下的makefile写法大同小异,但是对于makefile不熟悉的在导入一些dylib或者framework的时候就会变得很蛋疼. 对于f ...
- iOS逆向工程之Theos
如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生.那么由Tweak我们又会引出Theos, 那么什么是Theos呢,简单一句话,Theos是一个越狱开发工具包,Theos是越狱开发工具的首先 ...
- 使用Theos做一个简单的Mobile Substrate Tweak
01 January 2014 Mobile Substrate和Theos Mobile Substrate是Cydia的作者Jay Freeman (@saurik)的另外一个牛X的作品,也叫Cy ...
- theOS环境搭建
http://joeyio.com/ios/2014/01/01/make-a-mobile-substrate-tweak-using-theos/~/Doucment>: cd mytwea ...
- iOS逆向之TheOS
TheOS 被设计为一个在基于 Unix 平台 (Mac OS X.IOS…) 和大多数 的Linux 平台下开发 iOS 程序的集成开发环境.说是集成开发环境,其实就是给我们准备好了一些代码模板.预 ...
- THEOS的第一个TWeak的成功创建
THEOS的第一个TWeak的成功创建html, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMi ...
- obfuscator-llvm Theos 集成配置
之前我写过一篇文章是关于在 Xcode 里怎么集成配置 obfuscator-llvmobfuscator-llvm Xcode集成配置 有些情况下我们使用 Theos 开发 tweak,需要将 ob ...
- iOS逆向系列-theos
概述 theos是GitHub开源的一个项目,通过nic.pl创建tweak项目.通过编写我们注入代码,然后执行编译.打包.安装等操作将代码注入iPhone安装的制定程序. theos环境配置 安装签 ...
随机推荐
- hdu 1086 You can Solve a Geometry Problem too
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- HTTP学习笔记(1)ULR语法
1,概述 当你打开一个浏览器则会进入一个主页,也许你会想只是打开了浏览器罢了,但是浏览器默默的把这个主页默认的网址发送出去,你只是不知道而已,你只是没有输入而已.我们来做个实验. 1,双击打开 2,可 ...
- 20151009 C# 第一篇 基础知识
20151009 C#:优点: 1. 语法简洁:不直接操作内存,去掉了指针操作 2. 面向对象:具有封装.继承.多态特性 3. 支持Web标准:支持HTML.XML.SOAP 4. 兼容性:遵循.Ne ...
- html 问题
1.footer处理 目标: 页面较短,footer位于页面底部,出现滚动条时,依然在原来的位置,不随滚动条移动 页面较长,位于元素底部 .container{ position: relative ...
- linux 常用命令大全
linux 常用命令大全 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统 ...
- 【原创】-- uboot,kennel,fs,rootfs 编译制作
环境:ubuntu14.04 内核版本 linux 3.13.0 OK6410 内核编译环境 linux 3.0.1 uboot版本 1.1.6 交叉编译工具链 arm-lin ...
- 安装mysql数据库中的技巧、错误排查以及实用命令(持续更新)
针对解压版本5.7.16(博主使用的这个版本.在某些低版本中部分命令失效) 一.初始化data目录(解压版解压后没有data目录) mysqld --initialize-insecure --use ...
- 【概念笔记】JavaEE - web part1
IT`huhui前言录 想对学习的内容进行下简易的总结方便自己回头复习. 但是还有很多地方是不完善的需要慢慢修改. 持续更新. Web 服务器 IIS 微软主推 Apache C写的 Tomcat j ...
- 无环的visitor模式
无环的访问者模式,是来改进原有访问者模式的不足之处的,是Robert C. Martin首次提出的.我们知道访问者模式的优点是为被访问继承体系动态添加行为,而无须改变继承体系.但是GOF访问者模式的缺 ...
- HTTP权威指南阅读笔记三:HTTP报文
报文的组成部分 报文由三部分组成:对报文进行描述的起始行(start line).包含属性的首部(header),以及可选的.包含数据的主体(body)部分. 请求报文格式 <method> ...