make是个很不错的功能,这次在一个操作系统写makefile的时候发现了一个问题
首先在该操作系统下/build 目录下有个makefile,是用来决定要编译生产哪些文件,我是要写一个UDP的文件,在该makefile添加了
udpsocket:
@echo Making UDPsocket application at `date`
if ( test -e ../apps/udpsocket ) then \
cd ../apps/udpsocket; make; \
cp udp $(INSTALL_ROOT)/sbin; \
fi
然后在
/apps/udpsocket目录下添加了一个makefile文件,用于对我的udp.c文件进行编译
内容如下:
CC=$(TOOLPREFIX)gcc
LD=$(TOOLPREFIX)ld
AS=$(TOOLPREFIX)as
AR=$(TOOLPREFIX)ar
STRIP=$(TOOLPREFIX)strip
RANLIB=$(TOOLPREFIX)ranlib
CFLAGS += -Wall -pthread
#CFLAGS += -Werror -g
HFLAGS += -I${KERNELPATH}/arch/mips/include
HFLAGS += -I${KERNELPATH}/arch/mips/include/asm/mach-ar7
TARGET = udp
OBJS = udp.o
all:$(TARGET)
$(TARGET):$(OBJS)
$(CC) $(CFLAGS) -o $@ $^
rm -rf *.o
main.o:main.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -rf *~ *.o $(TARGET)
LD=$(TOOLPREFIX)ld
AS=$(TOOLPREFIX)as
AR=$(TOOLPREFIX)ar
STRIP=$(TOOLPREFIX)strip
RANLIB=$(TOOLPREFIX)ranlib
CFLAGS += -Wall -pthread
#CFLAGS += -Werror -g
HFLAGS += -I${KERNELPATH}/arch/mips/include
HFLAGS += -I${KERNELPATH}/arch/mips/include/asm/mach-ar7
TARGET = udp
OBJS = udp.o
all:$(TARGET)
$(TARGET):$(OBJS)
$(CC) $(CFLAGS) -o $@ $^
rm -rf *.o
main.o:main.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -rf *~ *.o $(TARGET)
原本我以为这样就可以了,结果奇怪的是发生了,到/build 目录下执行make 竟然没有编译生产udp的可执行文件,这就有点让人摸不着头脑了
好像就是被忽略过一样。
后来才发现还需要修改
makefile.ap121-2.6.31这个文件,在里面把我要编译的目录添加进去,,,