LINUX学习笔记—Makefile学习(二)

Makefile

多文件编译

在我们实际开发过程中,是不可能编译单一文件的,有很多源文件需要一起编译。例如现在在一个项目文件夹中有四个 .c 文件 test1.c test2.c test3.c test4.c
四个 .h 文件 test1.h test2.h test3.h test4.h
我们希望生成一个test可执行文件这时我们的Makefile可以写为

gcc test1.o test2.o test3.o test4.o -o test

test1.o:test1.c
gcc -c test1.c -o test1.o

test2.o:test2.c
gcc -c test2.c -o test2.o

test3.o:test3.c
gcc -c test3.c -o test3.o

test3.o:test3.c
gcc -c test3.c -o test3.o
.PHONY:
clearall:
   rm -rf test1.o test2.o test3.o test4.o test
clear:
   rm -rf test1.o test2.o test3.o test4.o 

变量替换

变量
= 替换
+= 追加
:= 常量恒等于
例如在刚才的demo中,可以替换为,类似于C语言中的宏定义

TAR = test;
OBJ = test1.o test2.o test3.o test4.o;
CC := gcc
//引用的时候需要用$符号
$(CC)(OBJ) -o $(TAR)

test1.o:test1.c
$(CC) -c test1.c -o test1.o

test2.o:test2.c
$(CC) -c test2.c -o test2.o

test3.o:test3.c
$(CC) -c test3.c -o test3.o

test3.o:test3.c
$(CC) -c test3.c -o test3.o
.PHONY:
clearall:
   rm -rf $(OBJ)(TAR)
clear:
   rm -rf $(OBJ)

隐含规则

%.c %.o //任意的 .c或者 .o
*.c  *.o   //所有的 .c或者 .o

因为许多大型工程源文件数太多了,这样写Makefile太过于麻烦,因此会使用这些隐含规则来代替。

库的调用

//例如在项目中如果需要解压jpg图片,或者使用线程相关函数,就需要在编译的时候调用相关的库
//LIBS 保存的是工程中所有需要用到的库及库的搜索路径
LIBS := -L /opt/arm_libs/lib  -ljpeg -lpthread -std=c99

//INCS 保存的是工程中所有需要用到的头文件的搜索路径
INCS := -I /opt/arm_libs/include  

本文章仅用于学习记录,如有不足会后续改正!!!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值