第三集内容:写一个命令行的helloworld
代码来自IOS冰与火之歌,下载下来之后,编译到成功运行的过程是这次的重点。
要使用make进行编译,Makefile怎么写?
找到一篇微博,经过修改(还好懂一点llvm)到下面这个Makefile。
C=clang
FRAMEWORKS:= -framework Foundation
LIBRARIES:= -lobjc
SDK:=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
SOURCE=hello.m Talker.m
CFLAGS=-isysroot ${SDK} -Wall -Werror -arch armv7 -g $(SOURCE)
LDFLAGS=$(LIBRARIES) $(FRAMEWORKS)
OUT=-o hello
all:
$(CC) $(CFLAGS) $(LDFLAGS) $(OUT)
直接make就ok了。我使用的是iPhone4s,CPU型号是armv7,如果其他高版本的ipone机型,就要使用arm64的选项。
make成功后,在当前文件夹生成一个hello程序,使用scp命令上传到手机上,如果直接运行会出现
Administratormato-iPhone:~ root# ./hello
Killed: 9
这时使用ldid签名,再运行程序就会运行成功。
Administratormato-iPhone:~ root# ldid -S hello
Administratormato-iPhone:~ root# ./hello
2016-03-12 12:23:47.111 hello[2641:707] Hello, Ice and Fire!
2016-03-12 12:23:47.115 hello[2641:707] Hello, Ice and Fire!