Makefile文件书写规则

运行后选择GDB/LLDB出现这样的窗口:launch: program ‘输入程序名称,例如 D:\Desktop\新建文件夹\a.exe‘ does not exist...如何解决? 🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。 阅读详情

Makefile文件书写规则

Makefile文件描述了整个程序的编译,链接规则,并最终生成可执行文件。

Makefile文件有属于自己的书写规则,关键字以及函数等 (自我感觉和解释语言shell也有相似之处)
基本规则(格式):
目标:依赖
<tab>命令
目标就是你要得到的文件名:如你想要的可执行文件,或者一个还没链接的 .o 类型的文件
依赖就是你要得到的目标文件所需要的文件
<tab>:固定的格式 
命令:linux下的命令 如:gcc wangcan.c  -o wangcan

下面举一个简单的小例子,就从HelloWorld 说起吧 (英语中少不了小华,计算机中少不了HelloWorld)
源文件:
/****hello.c*****/
#include<stdio.h>
int main()
{
    printf("HelloWodld\n");
    return 0;
}
对应的Makefife文件如下:
hello:hello.c
        gcc hello.c -o hello

第一行的规则也可以写为:
hello:hello.c;gcc hello.c -o hello
#开头表示注释(这个和shell一样)
如果一行过长的时候可以选择使用  \  将其划分为两行或者多行

我们也可以使用变量来代替Makefile中的目标,依赖,命令或者其它
例如:
object=hello.c
CC=gcc
SAFE= -Wall
hello:$(object)
        $(CC) $(SAFE) $(object) -o hello
在使用时要记得形式$( ) (对于文本字符串)
Makefile中还有一种变量,叫做自动变量,主要有以下几种:$@  $<  $^  
$@  :代表当前规则的目录
$<    :带表第一个依赖文件
$^    :代表所有文件列表,使用空格分隔
下面举一个稍微复杂的例子
如图显示各文件的关系:

                               <--------sort.o       <-----------------------sort.c lib1.h

example  <-----------<--------compute.o <---------------------compute.c

                               <--------main.o     <-----------------------main.c  lib2.h
Makefile文件如下
object=sort.o compute.o main.o
CC=gcc
SAFE=-Wall -g
example:$(object)
        $(CC) $^ -o $@
sort.o:sort.c lib1.h
        $(CC) $(SAFE) -c $< -o $@
compute.o:compute.c
        $(CC) $(SAFE) -c $< -o $@
main.o:main.c lib2.h
        $(CC) $(SAFE) -c $< -o $@

(另副我的GCC的版本: gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)   )

注意:
变量主要用来代表文件列表,编译选项列表,程序参数列表,文件搜索目录列表以及编译输出目录列表
变量名的大小写是敏感的
单字符的变量可以直接使用$,不需要加括号  如:$W ,而$WANG 会被识别为 $(W)ANG 
【2026年阿里巴巴集团暑期实习- 4月25日-算法岗-第二题- 矩阵计数】(题目+思路+Java&C++&Python解析+在线测试) 摘要: 给定两个非负整数序列a和b,构造n×m矩阵C,其中C[i][j]=a[i]×b[j]。统计矩阵中元素≥k的数量。解法是先对数组b排序,然后对于每个a[i],若k=0则直接累加m;若a[i]=0且k>0则跳过;否则计算需要的最小b[j]值,在排序后的b中使用二分查找确定满足条件的元素数量。时间复杂度为O((n+m)log m),空间复杂度O(1)。代码实现了排序和二分查找的高效组合。 阅读详情

相关推荐

Qt之QSqlTableModel:高效数据库操作与视图绑定的实战指南

本文深入探讨了Qt框架中的QSqlTableModel组件,它作为连接数据库与Qt视图的智能中介,能极大简化数据库的增删改查操作。通过实战代码演示,详细讲解了如何快速构建可编辑的数据表格、理解并设置关键的数据编辑策略(如OnManualSubmit),以及实现数据过滤、排序等高级功能。文章还提供了性能优化、事务处理及常见避坑指南,帮助开发者高效、稳健地开发数据库驱动的桌面应用。

y4z5a6b7的博客 440

makefile中命令写在两行和写在一行的区别

来看mafile: main: main.o g++ -o main main.o main.o: main.cpp g++ -o main.o -c main.cpp clean: cd test ; pwd cd . pwd        看看结果: taoge@localhost Desktop> make clean cd test ; pwd /home/taoge/

认知 行动 坚持 1万+

告别‘抓瞎’:CANoe的Trace、Graphics和Logging窗口实战技巧,高效分析总线故障

本文深入解析CANoe的Trace、Graphics和Logging窗口实战技巧,帮助工程师高效分析总线故障。通过智能过滤、可视化监控和智能日志管理,构建系统级问题定位工作流,显著提升车载网络故障排查效率。

weixin_42709044的博客 292

Makefile的书写规则和命令

Makefile

houzi6320的博客 1563

通过 Android Framework 调用高通 Perf HAL 实现 CPU/GPU 动态调频策略

本文详细介绍了如何通过Android Framework调用高通Perf HAL实现CPU/GPU动态调频策略。文章涵盖HAL交互原理、环境搭建、Power HAL接口实现、PerformanceHintManager应用及温度功耗平衡处理,帮助开发者安全高效地进行性能优化,避免直接操作底层硬件的风险。

keras9composer的博客 255

uds协议之can总线程序升级

uds协议简介 如何利用uds协议升级 升级流程 uds服务类型介绍

fangye945a的博客 1万+

如何写 Makefile 文件

Makefile 文件1. 为什么需要 Makefile 文件2. Makefile 简单示例3. Makefile 编译多个文件4. Makefile 实用技巧4.1 变量4.2 生成多个可执行文件参考文献 1. 为什么需要 Makefile 文件 在 Linux 系统中, 一般通过 make 工具编译链接源文件。当然,只有 make 是不能完成编译链接过程的。我们还需要一个 Makefile 文件来告诉编译器编译链接的规则。换句话说,就是 make 工具和 Makefile 文件需要配合使用。 此时,有

qq_39220334的博客 8103

nmap、X-Scan漏洞扫描和Metasploit中用永恒之蓝漏洞入侵靶机并上传冰河

利用nmap、X-Scan扫描靶机的漏洞,在Metasploit中用扫描出的永恒之蓝漏洞入侵靶机,建立连接后上传冰河木马控制靶机,最后用冰河陷阱清除靶机的冰河木马,记一次完整的入侵控制实验。

m0_59302403的博客 4407

makefile 基础规则

目录标题一、makefile用意二、 makefile规则2.1 命名与使用2.2 一个规则2.3 两个函数2.4 三个自动变量三、使用 一、makefile用意 一个大工程文件是成百上千的,一个个文件的去编译可想而知效率极其低下,使用Makefile实现自动编译,并且可避免已编译文件再次编译,大大的提升了软件的开发速度。 二、 makefile规则 2.1 命名与使用 名字为Makefile 或 makefile 使用指令:make 2.2 一个规则 编写规则: 目标:依赖条件 (一个 tab 缩进)命

one goto one 的博客 3647

YOLOv11改进策略【SPPF】| AIFI : 基于Transformer的尺度内特征交互,在降低计算成本的同时提高模型的性能

本文记录的是基于AIFI模块的YOLOv11目标检测改进方法研究。AIFI是RT-DETR中高效混合编码器的一部分,利用其改进YOLOv11模型,

Limiiiing的博客 2239

uniapp [安卓苹果App端] - 实现微信支付功能+拉起微信付款支付后返回本app页面,详解uniApp如何唤起本机微信app并跳转到支付页面全流程及示例源码(uniapp实现微信支付,可打包)

uni-app项目在APP端使用微信支付功能,uniapp前端实现微信支付,uniapp开发安卓App对接微信支付,uniapp苹果ios唤起微信支付,uniapp调用微信支付uniapp开发app-调用微信支付,uniapp开发安卓苹果app如何接入微信支付,前后端应该怎么做,UniApp中实现微信支付功能,支付报错,调起失败没响应,uniapp苹果微信支付唤起实现,app唤起微信支付,拉起微信支付,uniapp中唤醒微信进行支付并返回app,uniApp调起微信支付失败报错,全网最详细的uniapp微信

🏆 前端领域优质创作者 1万+

Makefile的文件格式,详解规则

Makefile文件由一系列规则(rules)构成。目标:前置条件命令1命令2 .. .上面第一行冒号前面的部分,叫做"目标"(target),冒号后面的部分叫做"前置条件"(prerequisites);第二行必须由一个tab键起首,后面跟着"命令"(commands)。"目标"是必需的,不可省略;"前置条件"和"命令"都是可选的,但是两者之中必须至少存在一个。每条规则就明确两件事:构建目标的前置条件是什么,以及如何构建。下面就详细讲解,每条规则的这三个组成部分。

十三阿哥的博客 2357

Open3D点云算法与点云深度学习案例汇总(长期更新)

Open3D-python算法专栏文章汇总,长期更新算法原理与实战案例。

纵马踏花向自由 7467

makefile文件的书写规则(make和makefile)

对于makefile,掌握一个规则,两个变量和三个函数。下面介绍一个规则。 makefile的作用:一个项目代码的管理工具。当一个项目的代码文件数(如.c文件)太多,用gcc编译会太麻烦,如果全部文件一次性编译,一个文件有错误,所有文件都需要重新编译。如果每个文件单独编译,则十分麻烦。因此,就有项目代码管理工具makefile。项目代码编译管理;节省编译项目的时间;一次编写,终身受益。 [ro...

luciusvorenus 2015

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

make/Makefile学习之一Makefile文件书写规则

make/

weixin_47273317的博客 621

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Makefile文件(三)_书写规则

参考原文http://blog.youkuaiyun.com/liang13664759/article/details/1771246/ Makefile书写规则包含两部分,一个是依赖关系,一个是生成目标。在Makefile中,规则的顺序很重要,因为Makefile中只有一个最终目标。一般,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终目标。如果第一条规则中的目标有多个,...

weixin_30596343的博客 190

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

makefile文件详解三--书写规则

此文章转发自:http://www.chinaunix.net/old_jh/23/408225.html 书写规则 ———— 规则包含两个部分,一个是依赖关系,一个是生成目标的方法。 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标

life_liver的专栏 405

makefile 书写规则三 文件搜寻

在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中。所以,当make需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉make,让make在自动去找。  Makefile文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make只会在当前的目录中去找寻依赖文件和目标文件。如果定义了这个变量,那么,m

u010530573的专栏 520

drools规则中调用其它规则_Makefile文件中包含哪些规则?

想要书写一个完整的 Makefile文件,需要了解 Makefile 的相关的书写规则。我们已经知道了 Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令,其结构如下所示:targets : prerequisites command或者是targets : prerequisites; command command相关说...

weixin_33110093的博客 261

很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序...

很详细、很移动的Linux makefile 教程   内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用make更新函数库文件 后序       近期在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是...

weixin_33961829的博客 728

【Linux】Makefile(二)-书写规则

Makefile的书写规则

rank_fei的博客 823

Makefile--书写规则

书写规则 规则包含两个部分, 一个是依赖关系, 一个是生成目标的方法。 在Makefile中,规则的顺序是很重要的, 因为,Makefile中只应该有一个最终目标, 其它的目标都是被这个目标所连带出来的, 所以一定要让make知道你的最终目标是什么。 一般来说,定义在Makefile中的目标可能会有很多, 但是第一条规则中的目标将被确立为最终的目标。 如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。 make所完成的也就是这个目标。 好了,还是让我们来看一看如何书写规则。 规则举例 f

x13262608581的博客 220

makefile学习笔记-书写规则(文件搜寻)

20180413 makefile学习笔记-书写规则(文件搜寻)在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中,所以,当make需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉make,让make去自动寻找。Makefile文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make只会在当前的目录中...

weixin_39089680的博客 247

makefile规则

书写规则时我们需要注意的几点: 1. 规则的命令部分有两种书写方式:a. 命令可以和目标:依赖描述放在同一行。命令在依赖文件列表后并使用分号(;)和依赖文件列表分开。b. 命令在目标:依赖的描述的下一行,作为独立的命令行。当作为独立的命令行时此行必须以[Tab]字符开始。在Ma

330

跟我一起写Makefile(8)--- 书写规则(规则语法+通配符+文件搜索+伪目标+多目标+静态模式+自动依赖)

原文链接:http://blog.youkuaiyun.com/haoel/article/details/2886 书写规则 ———— 规则包含两个部分,一个是依赖关系,一个是生成目标的方法。 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Mak

蔚蓝的天空Tom 425

Makefile 书写规则 规则举例 规则的语法 通配符 文件搜寻 伪目标 多目标 静态模式 自动生成依赖性

Makefile 里有什么 Makefile :显式规则、隐晦规则、变量定义、文件指示,注释 显式规则 makefile 明显指出,要生成的文件,文件的依赖文件,生成的命令 隐晦规则 make 有自动推导的功能 变量定义 定义一系列的变量(字符串),当执行,变量都会被扩展到相应的引用位置上 ...

记录点点滴滴 446
上一篇: ubuntu下进行u盘的挂载查看
下一篇: python中的StringIO和cStringIO模块
cassiePython
博客等级 码龄12年 303粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值