makefile常用写法和简易写法

makefile生成多个目标文件的写法(linux程序员必须掌握的程序编译技能) 小编读完陈皓大神关于Makefile的博客之后,对Makefile的使用有了更深入的理解,在此附上陈皓大神makefile博客的链接:https://blog.youkuaiyun.com/haoel/article/details/2886。博客中针对Makefile的介绍、编译和链接原理、以及规则都做了详细的介绍,因此小编在此仅归纳两种常用的makefile文件的写法,希望可以帮助读者掌握Makefile的写法。(阅读过程中若有不理解之处,可参考陈皓大神的博客,以此来提升理解) 一、初学者和小项目可使用的makef 阅读详情

1,先说常用到的

-l: 小写的l就是依赖的lib库,lib首字母,很好记。
-L: 引用的三方lib库所在目录,lib首字母大写就是目录,也好记。
-I: 少不了头文件目录,还是老路子,include首字母,大写代表目录

下面这些是编译选项:
-Wall:提示所有警告
-g: 产生调试信息,应该是gdb的首字母
-c: 就是编译咯,compile首字母
-o: 这个必须有的,就是编译链的输出,output的简写
如果大写的O,后面带数字表示优化级别,-O3火力全开

ar rcs: 生成静态库,即那些.a文件。
如果要生成so动态库,-shared -o搞定

下面是一些常见符号:
$@ 目标文件,$^ 所有的依赖文件,$< 第一个依赖文件

2,再来说说一些简易写法

主要是生成obj文件,最先是这样玩的:

xxx.o : xxx.c x.h xx.h xxx.h
(tab)cc -c xxx.c
意思是得到xxx.o中间文件,为后面的链接做准备。

后来用了makefile的推导,因为xxx.o会找它对应的同名c文件和h文件

xxx.o: x.h xx.h
是不是清爽很多了

如果编译文件多,obj就很多,于是我们又找到下面方法

OBJECTS = xx.o xxx.o xxxxx.o
OBJECTS是要链接的依赖文件,有多少写多少

.c.o:
(tab)cc $(CFLAGS) $< -c -o $@

然后用这一行都搞定了,CFLAGS变量是编译选项

如果obj文件太多,也是烦。用下面这个,都省略了。

SOURCE := $(wildcard *.c) $(wildcard *.cpp)
OBJECTS :=\$(patsubst %.c,%.o,\$(patsubst %.cpp,%.o,\$(SOURCE)))

直接使用OBJECTS就可以链接生成可执行文件了
$(TARGET) : $(OBJECTS)
(tab)$(CC) $(CFLAGS) -o $@ $(OBJECTS) $(LDFLAGS) $(LIBS)

3,最后来说说伪目标

.PHONY : task1 task2 all clean
这些就是伪目标,譬如我们可以这样:

all: task1 task2

clean
(tab) rm -rf *.o

华为od统一考试B卷【单词搜索】C++ 实现 找到它是一个小游戏,你需要在一个矩阵中找到给定的单词。假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O->R->L->D连成的单词,就算通过。意区分英文字母大小写,并且您只能上下左右行走,不能走回头路。 阅读详情

相关推荐

海康VisionMaster表面缺陷滤波实战:从参数调优到工业检测避坑指南

本文深入探讨海康VisionMaster表面缺陷滤波技术在工业检测中的应用,从参数调优到ROI绘制与Blob分析的协同策略,提供金属外壳、锂电池铝壳等复杂表面的缺陷检测实战指南。通过多级滤波架构和动态ROI生成法,显著提升检出率至98.7%,误检率低于0.5%,为工业质检提供智能化解决方案。

ujm5678901的博客 328

(杂记)Makefile的几种规则

Makefile文件用来告诉make如何编译生成一个程序,它也是make读入的唯一的配置文件 。

开发者 672

ESP32-C3微型9轴感知模块的硬件工程实践

在嵌入式系统小型化趋势下,低功耗微控制器与多传感器融合成为智能终端的基础技术路径。其核心原理在于芯片能效比、射频合规性与电源噪声抑制的协同优化,技术价值体现在降低认证门槛、提升EMC鲁棒性及保障MEMS传感器精度。典型应用场景包括可穿戴设备、微型无人机姿态控制和工业边缘传感节点。本文围绕ESP32-C3平台展开,深入解析QFN封装选型逻辑、同步降压电源设计、LSM9DS1九轴校准策略等关键环节,覆盖FCC/CE认证规避、USB-C接口EMC防护等高频工程痛点。

weixin_42607969的博客 367

Linux环境开发工具yum、makefile的使用 【Linux】

Linux基础开发工具的使用

qq_2972806103的博客 685

【论文阅读】LIME:Low-light Image Enhancement via Illumination Map Estimation(笔记最全篇)

文章目录AbstractIntroductionContributionMethodSpeed-up Method(1):ALM子问题 T子问题 G子问题 Z和μ\muμSpeed-up Method(2):权重变量实验conclusion 今天要整理的一篇论文是使用传统的方法解决低照度的问题,Guo等人于2016年发表在IEEE上,论文《LIME:Low-light Image Enhance...

florrie 2万+

别再只盯着报点率了:聊聊电容触摸屏算法里那些不为人知的‘软实力’

本文深入探讨了电容触摸屏算法中常被忽视的‘软实力’,包括环境噪声干扰、信号衰减补偿和多物理场耦合等核心挑战。通过对比消费电子与工业场景的算法需求,揭示了触摸算法在不同应用中的技术分野。文章还提供了实用的算法评估方法和前沿发展趋势,帮助开发者全面了解电容触摸屏技术的隐秘战场。

weixin_42524276的博客 389

makefile的简单编写

一个工程中的源文件数不胜数,其按照功能、模块、类型放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件是先编译,哪些文件后编译,哪些文件需要重新编译,甚至进行更多复杂的功能操作,makefile就像一个shell脚本,也可以执行操作系统的命令。makefile是一个文件,make是一个命令。Makefile带来的好处是自动化编译。一旦写好,只需要一个make命令,整个工程完全自动编译,大大提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的工具。

m0_65540975的博客 1226

‌NTRU算法详细教程 | 2025年最新版(基于NIST后量子密码标准更新)

‌:NTRU是当前抗量子加密的黄金标准,‌。

blns_yxl的博客 1802

Makefile零基础教学(一)初识makefile

MakefileMakefile 是一种用于自动化构建程序的脚本文件,通常包含了一系列规则和命令,用于指导构建系统如何生成目标文件。在构建程序时,Makefile 会根据文件之间的依赖关系,自动决定哪些文件需要重新构建,以及如何进行构建。Makefile是一个描述文件。定义一系列规则来指定源文件编译的先后顺序。拥有特定的语法规则,支持函数定义 和 函数调用。能够直接集成操作系统中的各种命令。包括其灵活性和高效性。

wuyiyu_的博客 1071

VMware VSAN 高级参数介绍(测试用)

VSAN 的策略驱动让我们看到了VSAN无穷的潜力,其设计思路相当新颖,在一个基础资源池上使用策略就能实现不同对象的区分服务,而目前没有其他厂家能到VMware这样的高度。 VSAN 呈现给用户配置很简单,但实际上设计及后台比较复杂。笔者无意间发现了VSAN的隐藏高级参数设置,有很多好玩的选项想分享出来。这些参数全部是针对每主机进行设置的。VSAN 中有很多默认设置,这些设置应该都是研发人员多次测试得出的最优值,修改可能导致环境异常,并不建议修改! 目录 参数1:全闪配置下 SSD 写缓存最大.

山水牧羊 2030

浮点数运算的陷阱与启示:FP16加法器/乘法器开发中的常见误区

本文深入探讨FP16加法器和乘法器开发中的常见误区,包括FP16格式解析、阶码对齐陷阱、尾数运算风险及规格化处理。通过Verilog实战代码展示防御性编程技巧,帮助开发者避免边界条件处理和异常状态管理中的错误,提升硬件设计的可靠性和效率。

dell8的博客 249

Linux makefile中的obj-$(XXX)

$(CONFIG_TEST) 是一个整体,$(xxx)表示引用变量 xxx   比如定义 CONFIG_TEST=y  $(CONFIG_TEST)就是y    obj-$(CONFIG_TEST) 就是 obj-y        又比如定义 CONFIG_TEST=m  $(CONFIG_TEST)就是m    obj-$(CONFIG_TEST) 就是 obj-m   ==...

gaoyuanLinkconcept的专栏 1万+

debian mirrors 镜像源 riscv 64 赛昉 星光 starfive vf2 InRelease‘ doesn‘t support architecture ‘riscv64‘

debian mirrors 镜像 riscv 64 赛昉 星光2 starfive vf2 InRelease' doesn't support architecture 'riscv64'

qq_29758759的博客 1258

Makefile的简易使用教程

Makefile的变量类型有许多,本文只解释常用的个别命令比如:预定义变量,用户自定义变量,自动化变量。变量类型集合如下面的表格所示。变量类型定义方式典型用途​用户自定义变量用户显式定义配置项目路径、文件名、选项等​预定义变量Make 内置控制编译器、工具链行为​自动化变量Make 动态生成在规则中引用目标或依赖文件​环境变量操作系统或 Shell跨 Makefile 共享配置​模式特定变量按文件模式定义为特定类型文件设置局部选项​命令行参数变量通过命令行传递。

m0_73991989的博客 1473

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Makefile常用写法

Makefile是linux的一种编译脚本,所以只能在linux的环境下使用。 makefile文件的执行方式是从下网上执行,所以最终生成的可执行文件的语句应该在文件的最上面。 一、常规编译c语言语句 编译单线程test.c文件 gcc test.c -o test 编译多线程test.c文件 gcc -pthread test.c -o test 如果是c++文件,把gcc用g++替换就可以编译。 二、初级使用Makefile makefile的注释是#,同Python 1.在需要编译的项目的根目录下

一只懒猫的博客 1533

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Makefile基本写法

Makefile 并没有看上去那么复杂,它有着的语法规则,类似于C语言中通用的函数写法,以函数的概念去理解,可以帮助我们对语法的记忆。 工程文件一般都会由编译器自动生成Makefile,但是日常编程也需要我们去读懂Makefile。 以下内容是我个人对Makefile的一些理解,如有不当,请纠正 下面是一整个Makefile文件的内容,可以将其分为三种结构来看 ALL:=build_ser O...

qq_40278197的博客 737

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux入门篇学习——makefile 基本语法和Makefile 常用函数

本文介绍了Makefile的基本语法和常用函数。主要内容包括:1. 基本语法部分讲解了vim缩进设置、Makefile语法格式、伪目标(.PHONY)以及变量的四种赋值方式(=、:=、?=、+=)和自动化变量($<、$@、$^);2. 常用函数部分详细说明了wildcard(目录展开)、notdir(去掉路径)、dir(取出目录)、patsubst(替换后缀)和foreach(循环执行)五个核心函数的使用方法。文章通过具体示例演示了如何运用这些语法和函数来编写高效的Makefile,特别强调了在复杂项

2301_80366509的博客 1313

Makefile写法

一、Makefile文件的格式: target:prerequisite(目标:依赖文件) command(==命令行的开头一定要用tab键,不能按空格==) 二 规则 1 目标:一般是可执行文件或伪目标 GNU make找寻默认的Makefile的规则是在当前目录下依次找三个文件——“GNUmakefile”、“makefile”和“Makefile”。其按顺序找这三个文件,一旦找...

今生的博客 602

makefile的语法及写法

0 Makefile概述 -------------------------------------------------------------------------------- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像

zhoubl668的专栏:远帆,梦之帆! 7万+

【Makefile】makefile中常用函数

常用的make函数使用方法汇总。make函数常用于处理文本,使得Makefile具有通用性调用方式。

shortgiraffe的博客 1774

Makefile 常用写法

Makefile用处很大,写法也很多,下面是我个人认为的 简单Makefile 好的写法: CGR_FRAMEWORK_HOME=../../../../../../cgr_framework/d3gn5-puma5-cgr-2.3.4-t4.2539/framework/ PROJECT_HOME=../../../../../../projects/d3gn5/trunk ...

LetsFl1988的专栏 186

【makefile入门】makefile选项和makefile.buil

学习makefile的常用选项,并通过一个案例来学习makefile.build

jk_lovers的博客 2077

g++和gcc 的makefile 写法

(本文主要以gcc为演示,如果是C++程序直接将给 gcc改为g++即可) 1.         gcc与g++编译流程: 1)         编译流程: 2)         预处理:生成.i的预处理文件。 ? 只激活预处理,这个不生成文件,需要把它重定向一个输出文件。 ? 演示: 3)         编译:生成.s的编译文件。 ? 只激活预处理和编译,

Linux学习 7999

Linux -【新手必看】Makefile完全指南:4种写法详解+基础语法+变量与函数全解析

本文以简单计算器项目为例,详解了四种常见 Makefile 写法及其区别。第一种直接编译所有源文件,简单但效率低;第二种显式写出每个目标文件的编译规则,效率高但规则繁琐;第三种利用隐式规则简化命令,保持增量编译且更简洁;第四种结合变量、通配符和自动变量,灵活且易维护,是推荐写法。文章还系统介绍了 Makefile 基础语法、变量分类(自定义变量与内置变量)、自动变量($@、$^、$<)、显示规则与隐式规则区别,以及常用函数(wildcard、patsubst、shell)

欢迎来到Petter_Deng的博客 1162

linux makefile的语法及写法

http://blog.youkuaiyun.com/zhoubl668/article/details/3952967 最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。 后记,看完

chungle2011的专栏 5967

makefile 写法学习

make file 语法 targets:prerequisites command $^: 代表所有的依赖文件 $@: 代表目标 $<: 代表第一个依赖文件 命令前加@取消回显 gcc -c 只编译不连接 -g 带可调度信息 -o2 更好的编译连接 -o 优化 -I /directory 指定inclue文件 -static 使用静态库 -wall 生成 -w 不生成警告 -D define ...

风二中的博客 547
上一篇: 什么叫响应式布局
下一篇: 又到乱码时
马克之
博客等级 码龄20年 1粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值