分类: LINUX
2012-05-18 22:39:26
*每个文件一个可执行文件*
还是觉得使用.hello.exe 这种写法有点怪,最新的版本
(1)
不要用
%:%.o
$(CC) -o $@ $< $(LDFLAGS)
这样的规则,因为make 会使用内部隐含规则如:
gcc -g -lrt -lpthread mutex.c -o mutex
那么-lpthread 不是在规则最后时,大量告警就出来了:
undefined reference to `pthread_create'
(2)
你可以用 .exe 代替
OBJS := $(SRCS:%.c=%.exe)
%.exe:%.o
(3)
或是直接写一句来覆盖隐含规则:
%:%.c
@echo "----------linking $@------"
$(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
(4)
.hello.exe 版本
OBJS := $(SRCS:%.c=.%.exe)
.%.exe: %.o
$(LD) -o $@ $< $(LDFLAGS)
%.o: %.c
$(CC) -o $@ -c $< $(CFLAGS)
(5) 最终版本
CC := gcc
SRCS := $(wildcard *.c)
OBJS := $(SRCS:%.c=%)
CFLAGS := -g
LDFLAGS := -lrt -lpthread
all: $(OBJS)
clean c:
rm -f a.out $(OBJS) $(OBJS:%=%.o)
%:%.c
@echo "----------linking $@------"
$(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
.PHONY: all clean c
(1) make-doc
chinaunix.net 中想查看同一类的文章,请点击标题下左边的分类链接
* 解决方案 * use virtualbox: has modification time 3.2e+07 s in the future
(0) ntpdate
(1) svn根目录下
find . -exec touch {} \;
(2) 最上层Makefile下
make clean
(3) 最上层Makefile下
make
* 如果写了很多小文件,每个文件一个使用一个.out的通用Makefile *