makefile 编译多文件程序实例

作者在 2010-07-09 23:37:36 发布以下内容
原始版本:
CC=gcc
sources=log.c u_socket.c u_task.c
objects=log.o u_socket.o u_task.o
include_dirs=
CFLAGS=$(include_dirs) -O0 -DU_OS=OS_LINUX

all: $(objects) u_task


log.o: log.c
    $(CC) -c $(CFLAGS) $<  -o $@  
    
u_socket.o: u_socket.c
    $(CC) -c $(CFLAGS) $<  -o $@  
    
u_task.o: u_task.c
    $(CC) -c $(CFLAGS) $<  -o $@  

u_task: log.o  u_socket.o  u_task.o
    $(CC) -g $(CFLAGS) st_task.c log.c u_socket.c u_task.c -lpthread -o $@  


.PHONY : clean
clean :
    rm -rf $(objects)
 
经验 | 阅读 1956 次
文章评论,共1条
vfdff(作者)
2010-07-09 23:38
1
第一步优化:<br />
CC=gcc<br />
sources=log.c u_socket.c u_task.c<br />
objects=log.o u_socket.o u_task.o&nbsp;&nbsp;<br />
include_dirs= <br />
CFLAGS=$(include_dirs) -O0 -DU_OS=OS_LINUX<br />
<br />
all: u_task<br />
<br />
task.o : %.o: %.c<br />
&nbsp; &nbsp; &nbsp; &nbsp; $(CC) -c $(CFLAGS) $&lt;&nbsp;&nbsp;-o $($&lt;:.c=.o)&nbsp;&nbsp;<br />
<br />
u_task:$(objects)<br />
&nbsp; &nbsp; &nbsp; &nbsp; $(CC) -g $(CFLAGS) st_task.c $(objects) -lpthread -o $@&nbsp;&nbsp;<br />
<br />
<br />
.PHONY : clean<br />
clean :<br />
&nbsp; &nbsp; &nbsp; &nbsp; rm -rf&nbsp;&nbsp;u_task $(objects)
游客请输入验证码
浏览1943147次