【编程】Makefile 使用模板

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文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值