【Linux】Linux系统教程三:Makefile

一、makefile

Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中纪录有文件的信息,在make时会决定在链接的时候需要重新编译哪些文件。

Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。

如果ubuntu没有Makefile,需要安装时,执行下面命令
Makefile执行标准

sudo apt install make
sudo apt install make-guile

以Makefile来写
目标 依赖

main:main.c
    gcc main.c -o main #具体执行的命令

版本1:

main:main.c add.c sub.c
    gcc main.c add.c sub.c -o main

版本2:(引入变量)
Makefile变量直接写名字就行了
变量引用:$(变量名)

TARGET=main #TARGET变量
CC=gcc
SRCS=main.c add.c sub.c

$(TARGET):$(SRCS)
    $(CC) $(SRCS) -o $(TARGET)

版本3:(引入函数)

TARGET=main #TARGET变量
CC=gcc
SRCS=$(wildcard *.c) #查找当前目录所有的.c

$(TARGET):$(SRCS)
    $(CC) $(SRCS) -o $(TARGET)

版本4:(添加中间变量.o)

TARGET=main #TARGET变量
CC=gcc
SRCS=$(wildcard *.c) #查找当前目录所有的.c
OBJ=$(patsubst %.c,%.o,$(SRCS))     #函数patsubst将.c替换为.o

$(TARGET):$(OBJ)
    $(CC) $(OBJ) -o $(TARGET)

版本5:(添加清除操作)

TARGET=main #TARGET变量
CC=gcc
SRCS=$(wildcard *.c) #查找当前目录所有的.c
OBJ=$(patsubst %.c,%.o,$(SRCS))     #函数patsubst将.c替换为.o

$(TARGET):$(OBJ)
    $(CC) $(OBJ) -o $(TARGET)  #gcc add.o sub.o main.o max.o -o main

clean:   #用于清除
    rm  $(OBJ)

版本6:(用特殊字符代替目标及依赖)
$@:表示目标 $<:初级依赖 $^:终级依赖

TARGET=main #TARGET变量
CC=gcc
SRCS=$(wildcard *.c) #查找当前目录所有的.c
OBJ=$(patsubst %.c,%.o,$(SRCS))     #函数patsubst将.c替换为.o

$(TARGET):$(OBJ)
    $(CC) $^ -o $@

%.o:%.c #.c生成.o
    $(CC) -c $< -o $@


clean:   #用于清除
    rm main $(OBJ)

终级版本7:

TARGET=main 
CC=gcc
CFLAGS=-I /mnt/hgfs/linuxshare/program/include  #指定头文件路径
DIRS=src .   #表示.c所在的路径
FILES=$(foreach dir,$(DIRS),$(wildcard $(dir)/*.c))   #循环查看.c文件*/
OBJ=$(patsubst %.c,%.o,$(FILES))     

$(TARGET):$(OBJ)
    $(CC) $(OBJ) -o $(TARGET) $(CFLAGS)

clean:   #用于清除
    rm main $(OBJ)

编译时直接在终端上输入:make
清除中间文件在终端上输入:make clean

二、制作开发板动态库

(1)
在这里插入图片描述
(2)
在这里插入图片描述
(3)
在这里插入图片描述
(4)
在这里插入图片描述
(5)
在这里插入图片描述
(6)
在这里插入图片描述
(7)
在这里插入图片描述
(8)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值