【编程】Makefile 使用模板

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012335044/article/details/81947060
Makefile
EXEC=wait fork_twice
OBJS = wait.o fork_twice.o
CFLAGS += 
LDFLAGS += -L . -lzkcommon
CC=gcc

all:share_lib $(EXEC)
    @echo "all done"

share_lib:
    gcc -c zkcommon.c -fPIC
    gcc -o libzkcommon.so  zkcommon.o -shared
    sudo cp libzkcommon.so /usr/lib/ -f

%.o:%.c
    $(CC) -MMD -c %< -O %@ $(OBJS) $(LDFLAGS)

clean:
    rm *.so -rf
    rm -rf $(EXEC)
    rm -rf $(OBJS)

-O2表示优化选项,2表示最优优化,即编译器会优化你的程序;
-o表示后边接的是文件名称;
$@是Makefile的通配符,代指你前面指定的文件名,例如有规则%.o:%.c,那么$@表示xxx.o文件(xxx是你的源代码文件的名称前缀);
$<表示搜索到的第一个匹配的文件,对于规则%.o:%.c$<表示第一个找到的.c文件。
简而言之,假设在一个文件夹下有若干.c文件,那么下面的规则:

%.o:%.c
    gcc -O2 -o $@ $< 

表示把所有的.c文件编译成中间.o文件。

猜你喜欢

转载自blog.csdn.net/u012335044/article/details/81947060