转自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环境配置 安装签 ...
随机推荐
- 将src非空的属性注入到des中
package lizikj.bigwheel.common.vo.merchandise.util; import java.lang.reflect.Field; import lizikj.bi ...
- C++ 无法将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,以实现开机自启动应用程序。
C++ 无法将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,以实现开机自启动应用程序.但可以写入到H ...
- C++ 添加库
三步走:(第三步总忘) 1.项目属性页的C/C++->常规->附加包含目录指向 2.链接器(Linker)->常规(general)->附加库目录指向 3.链接器->输入 ...
- js中比较实用的时期格式化
在javascript中,关于时间格式的转换. 可以将“2010-1-2” 转换为 “2010-01-02 00:00:00” 或者将“2010-1-2 2:13:6" 转换为 “2010- ...
- oracle 锁表查询及解决、表字段查询
在进行批量对DML操作时程序竟然中断了,不再往下执行.查询一下某张表被锁住了,因此不再往下执行了 如果怀疑表被锁了,或者事务未被正常关闭,在Oracle数据库中我们可以通过以下语句进行查询获取相关信息 ...
- Oracle实例和Oracle数据库(Oracle体系结构)
--========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...
- iOS开发常用的第三方类库
在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率:同时,也可以从它们的源代码中学习到很多有用的东西. Reachability 检测网络连接 用来检查网 ...
- Linux:用户&用户组操作
用户:查看用户:whoami.who am i.who mom likes创建用户:adduser dgw切换登录用户:su -l dgw退出当前用户: exit删除用户:deluser dgw -- ...
- Linux:Shell 常用通配符
字符 含义 * 匹配 0 或多个字符 ? 匹配任意一个字符 [list] 匹配 list 中的任意单一字符 [!list] 匹配 除list 中的任意单一字符以外的字符 [c1-c2] 匹配 c1-c ...
- https封装类,支持get/post请求
所需jar:commons-logging-1.1.3.jar.httpclient-4.3.1.jar.httpcore-4.3.jar package com.onlyou.microfinanc ...