makefile——小试牛刀

//a.h,包含头文件stdio.h,并且定义一个函数print
#include<stdio.h>
void print();//b.c,包含头文件a.h,然后就可以写print函数的内容了
#include"a.h"
void print(){
printf("who are you\n");
}//c.c,包含头文件a.h,调用print函数
#include"a.h"
int main(){
print();
return 0;
}

下面是Makefile 固定命名,记住这些文件全部在同一文件夹下,全部编写完成后,执行make命令就会自动执行Makefile了,


hello:c.o b.o   //其中hello是目标文件,c.o和b.o是依赖文件,需要这两个文件才能生成hello,因为现在还没有c.o文件,所以跳到c.o:c.c a.h那里,然后执行gcc -c c.c 执行完成后又返回该条语句,发现也没有b.o,所以跳到b.o:b.c a.hgcc -o hello c.o b.o  //这个是shell命令
c.o:c.c a.hgcc -c c.c    //其中gcc -c c.c是指编译生产c.o(改成gcc -o c.o c.c会报错)
b.o:b.c a.hgcc -c b.c
clean:      //执行make clean会执行下面的语句rm hello c.o b.o

执行效果如下

[root@bogon bp]# ls
a.h  b.c  c.c  Makefile
[root@bogon bp]# make
gcc -c c.c 
gcc -c b.c
gcc -o hello c.o b.o
[root@bogon bp]# ls
a.h  b.c  b.o  c.c  c.o  hello  Makefile
[root@bogon bp]# ./hello
who are you

改进后的方法,只需要修改Makefile

[root@bogon bp]# cat Makefile 
objects=c.o b.o    相当于C语言的宏定义变量
hello:c.o b.ogcc -o hello $(objects)
c.o:c.c a.hgcc -c c.c 
b.o:b.c a.hgcc -c b.c
clean:rm hello $(objects)

我们还能更精简这个过程,也是只修改Makefile

[root@bogon bp]# make
cc    -c -o c.o c.c
cc    -c -o b.o b.c
gcc -o hello c.o b.o
[root@bogon bp]# ls
a.h  b.c  b.o  c.c  c.o  hello  Makefile
[root@bogon bp]# ./hello
who are you
[root@bogon bp]# cat Makefile 
objects=c.o b.o
hello:c.o b.ogcc -o hello $(objects)
$(bojects):a.h  因为c.o和b.o都依赖a.h
c.o:c.c     可以省略掉gcc
b.o:b.c
clean:rm hello $(objects)
[root@bogon bp]# 

上面是我自己总结写的,原文如下http://www.cnblogs.com/sld666666/archive/2010/04/08/1707789.html

进行内核编译的时候make会多两个选项,-C和-M.

其中-C $(KDIR) 指明跳转到内核源码目录下读取那里的MakefileM=$(PWD) 表明然后返回到当前目录继续读入、执行当前的Makefile

转载于:https://www.cnblogs.com/biaopei/p/7730658.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云电脑是什么_云电脑和我们现在平时用的电脑有什么区别?

&#x1f340;温馨提示&#x1f340;公众号推送改版&#xff0c;为了不让您错过【掌中IT发烧友圈】每天的精彩推送&#xff0c;切记将本号设置星标哦&#xff01;~01云电脑&#xff0c;是5G云服务时代的电脑新概念&#xff0c;是电脑的新的一种形态。从具体操作使用上来讲&…

PHP如何用while实现循环,PHP 循环 -

PHP 循环 - While 循环循环执行代码块指定的次数&#xff0c;或者当指定的条件为真时循环执行代码块。PHP 循环在您编写代码时&#xff0c;您经常需要让相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句来完成这个任务。在 PHP 中&#xff0c;提供了下列循环语…

比较全的C语言面试题

1. static有什么用途&#xff1f;&#xff08;请至少说明两种&#xff09; 1).限制变量的作用域 2).设置变量的存储域 2. 引用与指针有什么区别&#xff1f; 1) 引用必须被初始化&#xff0c;指针不必。 2) 引用初始化以后不能被改变&#xff0c;指针可以改变所指的对象…

PHP爬取历史天气

PHP爬取历史天气 PHP作为宇宙第一语言&#xff0c;爬虫也是非常方便&#xff0c;这里爬取的是从天气网获得中国城市历史天气统计结果。 程序架构 main.php <?phpinclude_once("./parser.php");include_once("./storer.php");#解析器和存储器见下文$par…

Python 第三方库之docx

日常上官网 https://python-docx.readthedocs.io/en/latest/ 一、安装 pip install python-docx 二、写入word word 中主要有两种用文本格式等级&#xff1a;块等级&#xff08;block-level&#xff09;和内联等级&#xff08;inline-level&#xff09;word 中大部分内容都…

Unity AI副总裁Danny Lange:如何用AI助推游戏行业?

本文讲的是Unity AI副总裁Danny Lange&#xff1a;如何用AI助推游戏行业&#xff1f; &#xff0c;10月26日&#xff0c;在加州山景城举办的ACMMM 2017大会进入正会第三天。在会上&#xff0c;Unity Technology负责AI与机器学习的副总裁Danny Longe进行了题为《Bringing Gaming…

SPI 读取不同长度 寄存器_SPI协议,MCP2515裸机驱动详解

SPI概述Serial Peripheral interface 通用串行外围设备接口是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM&#xff0c;FLASH&#xff0c;实时时钟&#xff0c;AD转换器&#xff0c;还有数字信号处理器和数字信号解码器之间。SPI&#xff0c;是一种高…

oracle并发执行max,跪求大量并发执行insert into select语句的方案

现在有数十万张表要从A库通过insert into tablename select * from tablenamedblink的方式导入到B库中。B机上80个cpu&#xff0c;160G内存。希望能够大量并发执行。怎么写脚本呢&#xff1f;谁有这方面的经验&#xff0c;麻烦指点一下。谢谢。下面是我的脚本&#xff1a;#!/us…

20162314 《Program Design Data Structures》Learning Summary Of The First Week

20162314 2017-2018-1 《Program Design & Data Structures》Learning Summary Of The First Week Summary of teaching materials Algorithm analysis is the basic project of the computer science.Increasing function prove that the utilization of the time and spa…

高并发解决方法

2019独角兽企业重金招聘Python工程师标准>>> 高并发来说&#xff0c;要从实际项目的每一个过程去考虑&#xff0c;页面&#xff0c;访问过程&#xff0c;服务器处理&#xff0c;数据库访问每个过程都可以处理。&#xff08;前端-宽带-后端-DB&#xff09; 集群&…

MySQL 之 存储过程

一、初识存储过程 1、什么是存储过程 存储过程是在大型数据库系统中一组为了完成特定功能的SQL语句集&#xff0c;存储在数据库中。存储过程经过第一次编译后&#xff0c;再次调用不需要编译&#xff0c;用户可以通过指定的存储过程名和给出一些存储过程定义的参数来使用它。…

C/C++面试感受和经验以及面试题收藏

http://topic.csdn.net/u/20080924/15/3b00a84e-970f-4dea-92f2-868c5d1ad825.html 前段时间刚参加了n多公司的C/C软件工程师的面试&#xff0c;有国企&#xff0c;外企&#xff0c;私企&#xff08;moto&#xff0c;飞思卡尔&#xff0c;港湾&#xff0c;中国卫星XXX&#xf…

oracle存储过程季度方法,Oracle存储过程、触发器实现获取时间段内周、月、季度的具体时间...

欢迎技术交流。 QQ&#xff1a;138986722创建table&#xff1a;create table tbmeetmgrinfo(id number primary key, /*主键&#xff0c;自动增加 */huiyishi number, /*会议室编号 */STARTTIME varchar2(30), /*会议开始时间 */ENDTIME varchar2(30), /*会议结束时间 */CREATE…

如何root安卓手机_安卓Root+卡开机画面救砖教程丨以一加手机为例

一加手机买到手已经用了1个多月了&#xff0c;还有很多朋友在问我怎么Root、怎么替换Recovery、怎么安装Magisk、有时候刷Magisk模块变砖怎么解救。小编统一整理一下&#xff0c;其他安卓手机也可以参考&#xff0c;很多思路都是通用的。一加手机刷入TWRP并RootTWRP大概是现在安…

Linux用ctrl + r 查找以前(历史)输入的命令

在Linux系统下一直用上下键查找以前输入的命令&#xff0c;这个找刚输入不久的命令还是很方便的&#xff0c;但是比较久远的命令&#xff0c;用上下键效率就不高了。那个history命令也是个花架子&#xff0c;虽然功能多&#xff0c;但不好用&#xff0c;网上找了下&#xff0c;…

敬畏生产环境

生产环境即是运行用户正在使用的系统环境。有时&#xff0c;一些粗心的用户会把他们的生产环境交给我们&#xff0c;希望我们来进行变更操作&#xff0c;如部署Agent等。但我们实际上并不清楚这些生产环境有多重要&#xff0c;有时也不清楚我们的变更操作有多危险&#xff0c;其…

unity消息队列判断字符串相等有错误_Python3十大经典错误及解决办法

◆ ◆ ◆ ◆ ◆接触了很多Python爱好者&#xff0c;有初学者&#xff0c;亦有转行人。不论大家学习Python的目的是什么&#xff0c;总之&#xff0c;学习Python前期写出来的代码不报错就是极好的。下面&#xff0c;严小样儿为大家罗列出Python3十大经典错误及解决办法&#xf…

php qmqp 没有方法,CentOS7 php 安装 amqp扩展

继续安装完 rabbitmq后&#xff0c;安装phpqmqp扩展1.安装rabbitmq-c安装最新版wget -c https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gztar zxf rabbitmq-c-0.8.0.tar.gzcd rabbitmq-c-0.8.0./configure --prefix/usr/local/rabbitmq…

如何提高UDP的可靠性

TCP是通过确认机制和超时重传机制实现可靠传输 UDP UDP它不属于连接型协议&#xff0c;因而具有资源消耗小&#xff0c;处理速度快的优点&#xff0c;所以通常音频、视频和普通数据在传送时使用UDP较多&#xff0c;因为它们即使偶尔丢失一两个数据包&#xff0c;也不会对接收结…

CentOS 7镜像下载

方式一 官网下载 官网链接&#xff1a;http://isoredirect.centos.org/centos/7/isos/x86_64/ Actual Country 国内资源 Nearby Countries 周边国家资源 方式二 阿里云下载 阿里云站点&#xff1a;http://mirrors.aliyun.com/centos/7/isos/x86_64/ 各个版本的ISO镜像文件…