Linux-makefile笔记

简介: Linux-makefile笔记

Linux-makefile笔记


makefile

1.Makefile实际上是一个脚本文件,脚本把一些命令的集合批量放在一个文件里,统一执行。脚本可以干任何事情,Makefile用处单一。

2.Makefile里面内容

gcc hello -o hello

hello:hello.c

gcc hello.c -o hello(必须有一个tab缩进)

3.Makefile重要内容

命名:

1.makefile

2.Makefile

备注:如果是其他名字,则不能使用make命令

一个规则:

目标:依赖条件

(一个tab缩进)命令

1.目标的时间必须晚于依赖条件的时间,否则,更新目录

2.依赖条件如果不存在,找寻新的规则去产生依赖

默认第一个是终极目标,可以写入“ALL:文件名”,规定生成的最终文件

基本规则:1.若想生成目标,检查规则中的依赖条件是否存在,如不存在,则需要寻找是否有规则用来是生成该依赖文件

2.检查规则中的目标是否需要更新,必须先检查它的所有依赖,依赖中有任意一个被更新,则目标必须更新

两个函数:

wildcard函数

src=$(wildcard*.c) :匹配当前工作目录下所有.c文件,将文件名赋值给列表,赋值给变量src

patsubst把src变量里所有后缀为.c的文件替换成.o

obj=$(patsubst %.c,%.o,$(src))将参数3中,包含参数1的部分,替换成参数2

3个自动变量:

$@ 表示规则中的目标,在规则的命令中(在依赖条件中不行),表示规则中目标

$< 表示规则中的第一条件(再规则的命令中)

$^ 表示规则中的所有条件,组成一个列表(再规则的命令中)如果将该变量应用在模式规则中,它可将依赖条件列表中依赖一次取出,套用模式规则

4.Makefile下另一种写法

hello:hello.o

gcc hello.o -o hello

hello.o:hello.c

gcc -c hello.c -o hello.o

5.终端输入命令“make”

得到编译后的文件

6.多个文件生成可执行文件用makefile

a.out:hello.c add.c sub.c div1.c -o a.out

gcc hello.c add.c sub.c div.c -o a.out

7.

a.out:hello.o add.o sub.o div1.c -o a.out
gcc hello.o add.o sub.o div.o -o a.out
hello.o:hello.c
gcc -c hello.c -o hello.o
add.o:add.c
gcc -c add.c -o add.o
sub.o:sub.c
gcc -c sub.c -o sub.o
div.o:div.c
gcc -c div.c -o div.o

8.makefile可以写入

clean: (clean没有依赖条件)

-rm -rf 文件名

‘-’作用是删除不存在文件时,不报错

终端输入

make clean -n

模拟执行

make clean

执行

9.“#”是makefile里面的注释符号

10.模式规则

比如都是.o文件依赖于.c文件

可以写成:

%.o:%.c

gcc -c $< -o $@

相关文章
|
1月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
130 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
3月前
|
Linux
Linux源码阅读笔记10-进程NICE案例分析2
Linux源码阅读笔记10-进程NICE案例分析2
|
3月前
|
Linux
Linux源码阅读笔记09-进程NICE案例分析1
Linux源码阅读笔记09-进程NICE案例分析1
|
1月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
92 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
95 2
linux笔记 diff及patch的制作与使用
|
3月前
|
安全 Linux 开发者
Linux笔记之ldd命令详解
`ldd`命令是Linux环境下一个非常实用的工具,用于显示一个程序运行时所需的共享库依赖。它帮助开发者和系统管理员快速诊断程序运行问题,特别是在处理"找不到库文件"或者"错误的库文件版本"等错误时。然而,出于安全的考虑,对于不信任的可执行文件,应该慎用 `ldd`命令,可以考虑使用其他工具如 `objdump`。总的来说,懂得如何妥善且安全地使用 `ldd`,对于维护一个稳定和高效的Linux系统来说,是非常重要的。
82 9
|
3月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
3月前
|
消息中间件 安全 Java
Linux源码阅读笔记13-进程通信组件上
Linux源码阅读笔记13-进程通信组件上
|
3月前
|
存储 缓存 编译器
Linux源码阅读笔记06-RCU机制和内存优化屏障
Linux源码阅读笔记06-RCU机制和内存优化屏障
|
3月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
下一篇
无影云桌面