转自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环境配置 安装签 ...
随机推荐
- Tomcat部署方式
tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/he ...
- 【洛谷P3258】松鼠的新家
很好的一道题 LCA+树上前缀和 sum数组是前缀和数组, 分类讨论一下, 1.访问到一个点p1,若下一个点p2需要往儿子下面找的话,那么lca就是这个点p1,则sum[p1]--; sum[p2]+ ...
- scrum 4.0
1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作愉快进展顺利 ...
- iOS 设置tableview头部不可以向下拉动..
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGPoint point = scrollView.contentOffset; i ...
- C编程风格的人机交互 -- CSHELL (提供源码下载)
记得上大学时,做C语言的程序都是用sdb来调试的:再后来有了gdb,同sdb差不多,不过就好用了很多.但终究还是有点遗憾.比如,程序里设计了几个函数,如果想测试下它们,就不得不再编写个测试函数,用各种 ...
- 2014年IT界最具“钱”景的10类岗位
来自人力资源公司罗致恒富(Robert Half)的一组2014年薪资指导显示,在工程.软件开发和程序领域有一技之长的职工的薪资可能出现何种程度的增长.罗致恒富预计2014年薪资将平均上调3.7%,而 ...
- dialogic d300语音卡驱动重装后启动报错问题解决方法
dialogic d300 驱动重装后 dlstart 报错解决 问题描述:dlstart 后如下报错 [root@BJAPQ091 data]#dlstop Stopping Dialogic ...
- Cocos2d-x Application Wizard for Visual Studio User Guide
0. Overview Cocos2d-x-win32's project can be generated by Wizard. Wizard supports Visual Studio 2008 ...
- Eclipse程序员要掌握的常用快捷键
Ctrl+K 光标放在一个变量上(注意,是变量,如果你的光标放在了字符串上,如http://keleyi.com则没有任何作用的),按下Ctrl+K光标会定位到下一个相同的变量 Shift+Ctrl+ ...
- Linux sort 多字段分组排序
常用参数: -t: 指定分隔符 -k: 指定域 -u: 去除重复行 -n: 以数值排序 -r: 降序排序 (sort默认的排序方式是升序) -o: 结果重定向输出到文件 1.源文件: # cat hh ...