Skip to content

Commit 2a43be9

Browse files
committed
+): Add Makefile.
Modify code for compile.
1 parent 98f4681 commit 2a43be9

File tree

3 files changed

+75
-7
lines changed

3 files changed

+75
-7
lines changed

ch02/Makefile

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
OBJS_DIR = ./obj
2+
SRCS = hello.c \
3+
hello2.c \
4+
launchd.c
5+
6+
CFLAGS = -g -O2 -Wall -Wmissing-prototypes -std=c99 -ffast-math -fno-strict-aliasing
7+
CXXFLAGS = -g -O2 -Wall -fno-strict-aliasing
8+
LDFLAGS = -framework CoreFoundation -framework Security -framework SystemConfiguration
9+
10+
IPHONEOS_DEPLOYMENT_TARGET = 7.0
11+
IPHONEOS_DEPLOYMENT_BASE = 9.2
12+
ARCH = arm64
13+
14+
Developer=/Applications/Xcode.app/Contents/Developer
15+
PLATFORM_PHONE_DEVELOPER_BIN_DIR = $(Developer)/Platforms/iPhoneOS.platform/Developer/usr/bin
16+
SDKROOT_PHONE = $(Developer)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$(IPHONEOS_DEPLOYMENT_BASE).sdk
17+
18+
EXTRA_CFLAGS += -arch $(ARCH) -stdlib=libstdc++ -pipe $(INCLUDE) -isysroot $(SDKROOT_PHONE)
19+
EXTRA_CFLAGS += -miphoneos-version-min=$(IPHONEOS_DEPLOYMENT_TARGET)
20+
21+
AR = $(PLATFORM_PHONE_DEVELOPER_BIN_DIR)/ar
22+
CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
23+
CXX = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
24+
25+
CFLAGS += $(EXTRA_CFLAGS)
26+
LDFLAGS += $(EXTRA_LDFLAGS)
27+
CXXFLAGS += $(EXTRA_CFLAGS)
28+
LIBTOOL = $(Developer)/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
29+
30+
.SUFFIXES: .o-arm64
31+
MODULES_ARM = ${SRCS:%.c=$(OBJS_DIR)/%.o-arm64}
32+
MODULES_ARM := ${MODULES_ARM:%.cpp=$(OBJS_DIR)/%.o-arm64}
33+
MODULES_ARM := ${MODULES_ARM:%.cc=$(OBJS_DIR)/%.o-arm64}
34+
MODULES_ARM := ${MODULES_ARM:%.mm=$(OBJS_DIR)/%.o-arm64}
35+
36+
TARGET = hello hello2 launchd
37+
38+
default: all
39+
all: $(TARGET)
40+
41+
$(TARGET): $(MODULES_ARM)
42+
$(LIBTOOL) -arch_only $(ARCH) -o $@ $(MODULES_ARM) $(LDFLAGS)
43+
44+
$(OBJS_DIR)/%.o-arm64 : %.S
45+
@mkdir -p $(@D)
46+
$(CC) $(CXXFLAGS) -c $< -o $@
47+
48+
$(OBJS_DIR)/%.o-arm64 : %.c
49+
@mkdir -p $(@D)
50+
$(CC) $(CXXFLAGS) -c $< -o $@
51+
52+
$(OBJS_DIR)/%.o-arm64 : %.cc
53+
@mkdir -p $(@D)
54+
$(CXX) $(CXXFLAGS) -c $< -o $@
55+
56+
$(OBJS_DIR)/%.o-arm64 : %.cpp
57+
@mkdir -p $(@D)
58+
$(CXX) $(CXXFLAGS) -c $< -o $@
59+
60+
$(OBJS_DIR)/%.o-arm64 : %.mm
61+
@mkdir -p $(@D)
62+
$(CXX) $(CXXFLAGS) -c $< -o $@
63+
64+
clean:
65+
rm -rf core *.dSYM $(MODULES_ARM) $(TARGET)

ch02/hello2.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include <stdio.h>
22
#include <fcntl.h>
33
#include <stdlib.h>
4+
#include <unistd.h>
45

56
#define FILE "/var/mobile/Library/AddressBook/AddressBook.sqlitedb"
67

@@ -10,7 +11,7 @@ int main() {
1011
int nr;
1112

1213
if (fd < 0)
13-
exit -1;
14+
exit(-1);
1415
while ((nr = read(fd, buf, sizeof(buf))) > 0) {
1516
write(fileno(stdout), buf, nr);
1617
}

ch02/launchd.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#include <fcntl.h>
22
#include <sys/stat.h>
33
#include <sys/wait.h>
4-
#include "/usr/include/hfs/hfs_mount.h"
4+
#include <unistd.h>
5+
//#include "/usr/include/hfs/hfs_mount.h"
6+
#include "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator/sdk/MacOSX.sdk/usr/include/hfs/hfs_mount.h"
57

68
#define O_RDONLY 0x0000
79
#define O_WRONLY 0x0001
@@ -17,7 +19,7 @@ const char* fsck_hfs[] =
1719
const char* fsck_hfs_user[] =
1820
{ "/sbin/fsck_hfs", "-y", "/dev/rdisk0s1s2", NULL };
1921

20-
void sleep(unsigned int sec) {
22+
void my_sleep(unsigned int sec) {
2123
int i;
2224
for (i = sec * 10000000; i>0; i--) { }
2325
}
@@ -75,7 +77,7 @@ int fsexec(char* argv[], char* env[], int pause) {
7577
if (pid != 0) {
7678
if (pause) {
7779
while (wait4(pid, NULL, WNOHANG, NULL) <= 0) {
78-
sleep(1);
80+
my_sleep(1);
7981
}
8082
} else {
8183
return pid;
@@ -96,22 +98,22 @@ int main(int argc, char **argv, char **envp) {
9698
console = open("/dev/console", O_WRONLY);
9799
dup2(console, 1);
98100

99-
sleep(5);
101+
my_sleep(5);
100102
for(i=0;i<75;i++)
101103
puts("\n");
102104
puts("ramdisk initialized.\n");
103105

104106
puts("searching for disk...\n");
105107
while (stat("/dev/disk0s1s1", &s) != 0) {
106108
puts("waiting for /dev/disk0s1s1 to appear...\n");
107-
sleep(30);
109+
my_sleep(30);
108110
}
109111

110112
puts("mounting root filesystem...\n");
111113
while(1) {
112114
if (hfs_mount("/dev/disk0s1s1", "/mnt", MNT_ROOTFS | MNT_RDONLY) != 0) {
113115
puts("unable to mount filesystem, waiting...\n");
114-
sleep(10);
116+
my_sleep(10);
115117
} else {
116118
break;
117119
}

0 commit comments

Comments
 (0)