Makefile的变量$@ $^

来源:互联网 发布:vc6.0编程代码 编辑:程序博客网 时间:2024/06/08 06:22

想写个makfile结果总是失败。
下面是正确的写法:

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.cgcc -o lib1.o lib1.c/usr/lib/gcc/x86_64-redhat-linux/5.3.1/../../../../lib64/crt1.o:在函数‘_start’中:(.text+0x20):对‘main’未定义的引用collect2: 错误:ld 返回 1Makefile:15: recipe for target 'lib1.o' failedmake: *** [lib1.o] Error 1

你知道让我犯的是什么吗?连着搜了好几个blog,大概都是同样差不多的内容,没有一个好用的,看来有些只是还是需要自己实际测试一下的。直接拿来的不好用。

0 0
原创粉丝点击