首页 > 其他分享 >Makefile使用教程1

Makefile使用教程1

时间:2024-05-23 21:18:45浏览次数:8  
标签:文件 教程 makefile make 规则 Makefile 使用 hello

规则(Rules):一个Makefile文件由一条一条的规则构成,一条规则结构如下

target … (目标): prerequisites …(依赖)
        recipe(方法)
        …
        …

最简单的Makefile

hello: hello.cpp
    g++ hello.cpp -o hello # 开头必须为一个Tab,不能为空格

但通常需要将编译与链接分开写,分为如下两步

hello: hello.o
    g++ hello.o -o hello
hello.o: hello.cpp
    g++ -c hello.cpp

Makefile文件的命名与指定

Make会自动查找makefile文件,查找顺序为GNUmakefile -> makefile -> Makefile

GNUmakefile:不建议使用,因为只有GNU make会识别,其他版本的make(如BSD make, Windows nmake等)不会识别,如果只给GNU make使用的情况

makefile:可以使用,GNU make和其他版本make识别

Makefile:最常用,强烈建议使用

如果运行make的时候没有找到以上名字的文件,则会报错,这时候可以手动指定文件名

make -f mkfile  # make -f <filename>
make --file=mkfile # make --file=<filename>
 手动指定之后,make就会使用指定的文件,即使有Makefile或者makefile不会再自动使用    

Makefile文件内容组成

一个Makefile文件通常由五种类型的内容组成:显式规则、隐式规则、变量定义、指令和注释

显式规则(explicit rules):显式指明何时以及如何生成或更新目标文件,显式规则包括目标、依赖和更新方法三个部分

隐式规则(implicit rules):根据文件自动推导如何从依赖生成或更新目标文件。

变量定义(variable definitions):定议变量并指定值,值都是字符串,类似C语言中的宏定义(#define),在使用时将值展开到引用位置

指令(directives):在make读取Makefile的过程中做一些特别的操作,包括:

  1. 读取(包含)另一个makefile文件(类似C语言中的#include)

  2. 确定是否使用或略过makefile文件中的一部分内容(类似C语言中的#if)

  3. 定义多行变量

注释(comments):一行当中 # 后面的内容都是注释,不会被make执行。make当中只有单行注释。如果需要用到#而不是注释,用\#。

       

 

标签:文件,教程,makefile,make,规则,Makefile,使用,hello
From: https://www.cnblogs.com/navysummer/p/18209366

相关文章

  • Flutter笔记:Widgets Easier组件库-使用隐私守卫
    Flutter笔记WidgetsEasier组件库:使用隐私守卫-文章信息-Author:李俊才(jcLee95)VisitmeatCSDN:https://jclee95.blog.csdn.netMyWebSite:http://thispage.tech/Email:[email protected]:https://blog.csdn.net......
  • 使用tc命令模拟linux网络延迟环境
    tc(TrafficControl)是Linux中用于流量控制和网络模拟的强大工具。你可以使用它来模拟网络延迟、带宽限制、数据包丢失等。以下是一个使用tc模拟网络延迟的基本步骤:1.查看当前的qdisc(队列规则)和filter(过滤器)首先,确保你的网络接口没有设置任何qdisc。你可以使用以下命令查......
  • 配置kdump使用的debug内核
    1.背景在ubuntu20.04上使用自己编译的内核配置kdump,发现kdump的内存用量特别大,我从1024M开始,每次加128M进行测试,直到1536M才能成功转储。这应该和我编译的内核尺寸有关,/var/lib/kdump目录下的initrd.img足足有三百多M:这样占用1.5个G的空间确实很浪费。而且这个值还不能过大,比......
  • Git入门教程
    Git入门教程目录页1.Git介绍1.1.Git工作原理2.Git环境配置2.1.Git下载与安装2.2.Git使用方式2.3.Git基本配置2.3.1.Git与Github的通信建立2.3.2.忽略不同步文件3.命令行方式——Git命令代码输入3.1.常用Git命令3.2.git本地操作3.3.g......
  • 如何查看mysql使用的内存
    要查看MySQL使用的内存,我们可以通过多种方式来获取相关信息。以下是几种常见的方法,包括使用命令行工具、MySQL的系统变量以及查询information_schema数据库。1.使用SHOWSTATUS命令我们可以使用SHOWSTATUS命令来查看MySQL服务器状态,其中包括一些与内存使用相关的变量。SHOWS......
  • JavaScript中reduce()详解及使用方法。
    一、定义和用法reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce()可以作为一个高阶函数,用于函数的compose。reduce()方法为归并类方法,最常用的场景就是,计算数组中的每一项的总和。注意:reduce()对于空数组是不会执行回调函数的......
  • python DataFrame之MultiIndex 的使用
    importpandasaspdimportpprintasp#嵌套列表arrays=[['a','a','b','b'],[1,2,1,2]]#创建MultiIndexindex=pd.MultiIndex.from_arrays(arrays,names=('letter','number'))#使用MultiInd......
  • 手把手教你搭建个人网站服务器教程
    什么是网站服务器网站服务器就是用于存储网站的所有文件,比如网页、图片、视频等。当你想要访问某个网站时,你就会通过客户端浏览器(如Chrome、Firefox等)输入网站的网址,就可以向网站服务器发送请求该网站的内容,网站服务器接收请求并返回你想要访问的网页内容,这个过程俗称上网。选......
  • elasticsearch使用Sort排序时Please use a keyword field instead.
    具体报错信息ElasticsearchStatusException[Elasticsearchexception[type=search_phase_execution_exception,reason=allshardsfailed]];nested:ElasticsearchException[Elasticsearchexception[type=illegal_argument_exception,reason=Textfieldsarenotoptimised......
  • 百问网,T113 usb摄像头使用cpu解码显示
    1资料下载https://download.100ask.net/boards/Allwinner/T113/index.html2软件安装资料下载完毕后,根据说明,安装vmware,安装win驱动3配置开发环境为了方便,建议将sdk文件上传到目录/home/book/安装必要的工具包,如果出现问题Couldnotgetlock/var/lib/dpkg/lock-......