首页 > 其他分享 >15_makefile

15_makefile

时间:2023-09-08 09:22:49浏览次数:38  
标签:15 exec cc make makefile fun main

makefile

makefile的概述

gcc a.c b.c c.c -o main

如果只修改了b.c 使用gcc编译 需要对所有文件重新编译

make是个命令, 是个可执行程序, 用来解析makefile 文件的命令

makefile是个文件, 描述了程序的编译规则

采用makefile的好处:

1简化编译程序的时候输入的命令, 编译的时候只需要敲make命令即可

2可以节省编译时间, 提高编译效率

makefile语法规则

目标:依赖文件

​ 命令列表

gcc a.c b.c c.c -o main

目标:需要生成的文件

依赖文件:通过依赖文件生成目标文件

main:a.c b.c c.c

​ gcc a.c b.c c.c -o main

makefile文件

main:02_code.c
	gcc 02_code.c -o main

用make命令执行makefile文件

make默认在工作目录寻找GNUmakefile, makefile, Makefile的文件作为makefile输入文件

make -f 自定义makefile文件名

若使用make命令没有指定目标, 则make工具默认实现makefile文件夹中的第一个目标, 然后退出

make 目标 //指定运行哪一个目标

makefile 变量

自定义变量

变量名=变量值

引用变量: $(变量名)或${变量名}

num = 10

${num} //10

cc = gcc
exec = main
obj = main.o fun.o
${exec}:${obj}
	${cc} ${obj} -o  ${exec}
${exec}.o:main.c
	${cc} -c main.c -o main.o
fun.o:fun.c
	${cc} -c fun.c -o fun.o
clean:
	rm *.o ${exec}
test: main.c fun.c
	${cc} main.c fun.c -o test

系统环境变量

make可以识别系统环境变量, 在makefile中直接读取或修改拷贝后的变量

查看环境变量: env

预定义变量

image-20230908080209621

%自动匹配

//通用makefile
cc=gcc
exec=main
obj=main.o fun.o
flags=-Wall -lm

${exec}:${obj}
	${cc} $^ -o $@ ${flags}
%.o:%.c
	${cc} -c $< -o $@ ${flags}
clean:
	rm ${} ${exec}
test: main.c fun.c
	${cc} main.c fun.c -o $@

标签:15,exec,cc,make,makefile,fun,main
From: https://www.cnblogs.com/mzx233/p/17686595.html

相关文章

  • Tomcat_PUT方法任意写文件(CVE-2017-12615)
    目录Tomcat_PUT方法任意写文件(CVE-2017-12615)1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证工具扫描验证POC1.6、修复建议Tomcat_PUT方法任意写文件(CVE-2017-12615)说明内容漏洞编号CVE-2017-12615漏洞名称Tomcat_P......
  • Apache HTTPD-换行解析漏洞(CVE-2017-15715)
    目录ApacheHTTPD-换行解析漏洞(CVE-2017-15715)1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证1.5、深度利用GetShell1.6、修复建议ApacheHTTPD-换行解析漏洞(CVE-2017-15715)说明内容漏洞编号CVE-2017-15715漏洞名称Apac......
  • qstat报错15137
    PBS服务报错,报错信息如下:socket_connect_unixfailed:15137socket_connect_unixfailed:15137socket_connect_unixfailed:15137qstat:cannotconnecttoserver(null)(errno=15137)couldnotconnecttotrqauthd 解决方法:启动“trqauthd”和“p......
  • 米联客ZYNQ MLK-F6-CZ05-7015 开发平台硬件手册
    1整体概述米联客ZYNQ系列开发平台和核心模块经过多次迭代升级,在工业自动化、水利电力控制设备、医疗图像设备等领域广泛应用,产品性能接受了广大客户的检验,稳定可靠。2021年因芯片普遍紧缺涨价,核心模块再次升级以确保供货稳定和降低用户的使用成本。2硬件参数概述 MLK-F......
  • 米联客ZYNQ MLK-F6-CZ05-7015 开发平台硬件手册
    1整体概述米联客ZYNQ系列开发平台和核心模块经过多次迭代升级,在工业自动化、水利电力控制设备、医疗图像设备等领域广泛应用,产品性能接受了广大客户的检验,稳定可靠。2021年因芯片普遍紧缺涨价,核心模块再次升级以确保供货稳定和降低用户的使用成本。2硬件参数概述 MLK-F......
  • pydantic学习与使用-15.校验邮箱格式EmailStr
    前言pydantic可以使用EmailStr校验邮箱格式环境准备EmailStr需按依赖包ImportError:email-validatorisnotinstalled,runpipinstallpydantic[email]pipinstallpydantic[email]校验邮箱格式frompydanticimportBaseModel,EmailStr,validatorfromtypingi......
  • 08:49:45,218 WARN JDBCExceptionReporter:71 - SQL Error: 156, SQLState: S1000 关
    昨晚运行以前的一个项目,在初始化数据的时候报:08:49:45,218 WARNJDBCExceptionReporter:71-SQLError:156,SQLState:S100008:49:45,218ERRORJDBCExceptionReporter:72-关键字'user'附近有语法错误。org.hibernate.exception.GenericJDBCException:couldnotexecute......
  • OpenSSH 用户枚举漏洞(CVE-2018-15473)【原理扫描】
    最烦做等保了!!!! 有没有同感的? 修复过程记录一下,为什么要记录呢,等保漏洞每次都是那些,我一直没有进行文档记录,导致我每次都要百度搜索解决。查看当前服务器openssh的版本#当前系统版本cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)ssh-vOpenSSH_7.4p1......
  • 面试经典150题(第1题)
    准大三生,最近一直在准备寒假实习,想要每天坚持刷Leetcode上面的一些经典面试算法题,选定了掘金作为自己的记录的平台!面试经典150题数组/字符串合并两个有序数组(https://leetcode.cn/studyplan/top-interview-150/)题目:给你两个按 非递减顺序 排列的整数数组 `nums1`和 `nums......
  • iPhone 15国行售价疑曝光:标准版5999元起、Pro版涨至8999元起
    苹果下周就要发布新iPhone了,不出意外的话,下周三一整天都会被iPhone15系列的各种新配置等信息刷屏。当然,最受关注的还是价格,不论任何配置最终都是要与价格相匹配的,就像流传最广的一句话“没有垃圾的产品,只有垃圾的价格”。据爆料,这次iPhone15和iPhone15Plus价格依然维持不变......