make命令和makefile文件
? ? .c.a????? ???????????????????????????????
? ? ? ? ? ? ? ?$(CC)?? -c??? $(CFLAGS)??? $<??????? $(AR)????
? ? ? ? ? ? ? ? $(ARFLAGS)??? $@???? $*.o?
第一条规则告诉它必须编译源文件以生成目标文件。
第二条规则告诉它用ar命令将新的目标文件添加到函数库中 。??
代码示例: main.c? ? 1.c? 2.c? 3.c? ? ?a.h? ?b.h? c.h?
makefile1?
myapp: main.o 2.o 3.o
gcc -o myapp main.o 2.o 3.o
mian.o: main.c a.h
gcc -c main.c
2.o: 2.c a.h b.h
gcc -c 2.c
3.o: 2.c b.h c.h
gcc -c 3.c
makefile2?
all:myapp
CC = gcc
INSTDIR = /usr/local/bin
INCLUDE = .
CFLAGS = -g -Wall -ansi
myapp: main.o 2.o 3.o
$(CC) -I$(INCLUDE) $(CFLAGS) -c main.c
2.o: 2.c a.h b.h
$(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c
3.o: 3.c b.h c.h
$(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c
clean:
-rm main.o 2.o 3.o
install : myapp
@if [-d $(INSTDIR) ]; \
then \
cp myapp $(INSTDIR);\
chmod a+x $(INSTDIR)/myapp;\
chmod og-w $(INSTDIR)/myapp;\
echo "Instaled in $(INSTDIR)";\
else \
echo "Sorry $(INSTDIR) does not exit ." ;\
fi