红联Linux门户
Linux帮助

makefile的库函数

发布时间:2010-11-05 15:26:26来源:红联作者:wucongdonglai
最近看makefile方面的东西,关于函数库和归档问题。不大理解
all: myapp
# Which compiler
CC=gcc
# Options for development
CFLAGS=-g -Wall -ansi
# Options for release
# CFLAGS=-O -Wall -ansi
# Local Libraries
MYLIB=mylib.a //这里定义了MYLIB的宏
myapp: main.o $(MYLIB) //这里没什么好说的,就是一般的宏引用而已
$(CC) -o myapp main.o $(MYLIB)
$(MYLIB): $(MYLIB)(2.o) $(MYLIB)(3.o) //这里把宏翻译了,不就是mylib.a: mylib.a(2.o) mylib.a(3.o)嘛?这个make是怎么读的呢?
main.o: main.c a.h
2.o: 2.c a.h b.h
3.o: 3.c b.h c.h
到了输出,假设当前文件夹只存在2.c,3.c.a.h,b.h,c.h,输出为
gcc -g -Wall -ansi -c -o main.o main.c
gcc -g -Wall -ansi -c -o 2.o 2.c
ar rv mylib.a 2.o
[color=red]ar: creating mylib.a
a - 2.o
gcc -g -Wall -ansi -c -o 3.o 3.c
ar rv mylib.a 3.o
a - 3.o
gcc -o myapp main.o mylib.a
这红色的倒是有点像[/color]
分别输入了
ar rv mylib.a 2.o
ar rv mylib.a 3.o
但是这不是命名是mylib.a: mylib.a(2.o) mylib.a(3.o)吗?这是怎么解读的呢?
文章评论

共有 4 条评论

  1. imo_zhao 于 2012-02-14 17:31:33发表:

    看不懂啊。。。。

  2. dzctuser 于 2012-02-14 13:30:58发表:

    支持!!

  3. linuxydy 于 2012-02-14 08:43:50发表:

    好经验

  4. wucongdonglai 于 2010-11-05 17:30:30发表:

    1# wucongdonglai
    哈,明白了,对mylib(a.o)是这么解读的
    .c.a:
    $(CC) -c $(CFLAGS) &<
    $(AR) $(ARFLAGS) $@ $*.c
    就这产生咯,结贴