Makefile的变量$@ $^
2017-01-20 14:34
453 查看
想写个makfile结果总是失败。
下面是正确的写法:
注意,$@和$^的用法,之前看了网上别人的文章,照着写总是错:
这样是不行的。将会有如下的提示:
你知道让我犯的是什么吗?连着搜了好几个blog,大概都是同样差不多的内容,没有一个好用的,看来有些只是还是需要自己实际测试一下的。直接拿来的不好用。
下面是正确的写法:
LIB1_SRC := $(wildcard *.c) LIB1_OBJ := $(LIB1_SRC:%.c=%.o) CC = gcc CFLAGS= LDLIBRARY= LIBRARY= .PHONY: clean all all: $(LIB1_OBJ) $(LIB1_OBJ): $(LIB1_SRC) $(CC) -o $@ -c $^ @echo $(LIB1_SRC) @echo '$^' "=" $^ clean: @rm -f *.o
注意,$@和$^的用法,之前看了网上别人的文章,照着写总是错:
$(CC) -o $@ $^
这样是不行的。将会有如下的提示:
#gcc -c lib1.c gcc -o lib1.o lib1.c /usr/lib/gcc/x86_64-redhat-linux/5.3.1/../../../../lib64/crt1.o:在函数‘_start’中: (.text+0x20):对‘main’未定义的引用 collect2: 错误:ld 返回 1 Makefile:15: recipe for target 'lib1.o' failed make: *** [lib1.o] Error 1
你知道让我犯的是什么吗?连着搜了好几个blog,大概都是同样差不多的内容,没有一个好用的,看来有些只是还是需要自己实际测试一下的。直接拿来的不好用。
相关文章推荐