
3个回答
展开全部
当你不指定make的目标,也就是光输入make,那么它默认只构建第一个目标,也就是l2.o
所以你应该在makefile最开始的地方加一句:
all: l1.o l2.o l3.o
这种方法还是不够好,建议另一种方法,也就是%规则:
OBJS:=l1.o l2.o l3.o
all: $(OBJS)
%.o: %.c
gcc -c $< -o $@
# 注意上一行中gcc前面的是TAB不是空格
.PHONY all
所以你应该在makefile最开始的地方加一句:
all: l1.o l2.o l3.o
这种方法还是不够好,建议另一种方法,也就是%规则:
OBJS:=l1.o l2.o l3.o
all: $(OBJS)
%.o: %.c
gcc -c $< -o $@
# 注意上一行中gcc前面的是TAB不是空格
.PHONY all
展开全部
你看,l2.o 依赖于 l1.c 接着又依赖与 l2.c,其实这么写是不行的,如果你这么谢了,也是生成l2.o文件。
如果你想这几个都编译的话,你可以这样写:
{{{class="makefile"
.PHONY: all
all: l2.o l3.lo
l2.o: l2.c l1.o
gcc -o $@ -c $^
l1.o: l1.c
gcc -o $@ -c $^
l3.o: l3.c
gcc -o $@ -c $^
}}}
这样不知道是否能够回答你的问题。
如果你想这几个都编译的话,你可以这样写:
{{{class="makefile"
.PHONY: all
all: l2.o l3.lo
l2.o: l2.c l1.o
gcc -o $@ -c $^
l1.o: l1.c
gcc -o $@ -c $^
l3.o: l3.c
gcc -o $@ -c $^
}}}
这样不知道是否能够回答你的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你还是先去看makefile的编写规则吧。网上有的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |