Linux 我的第一个makefile(Linux指令学习笔记)
我的第一个makefile
最近学到了makefile的文件的编写。makefile是一个能达到方便编译链接生成目标程序的文件,
make确实很方便,在写makefile的过程也能更好的理解gcc编译器执行生成可执行文件的全过程。这里是我
的第一个makefile的编写。

makefile根据依赖,逐步解析生成目标文件。
首先指定all:ef 生成最终目标文件ef
生成ef的前提是依赖ef:total.o sum.o mul.o 三个目标文件。
并且我们要指定gcc的执行 gcc -o ef total.o sum.o mul.o
由于生成ef需要三个*.o文件,所以我们要生成三个*.o文件。
生成total.o 需要文件total.c
生成sum.o 需要文件sum.c
生成mul.o 需要文件mul.c
所以我们指定生成依赖关系,然后指定gcc执行过程。
当执行make时,make会根据他们之间的依赖关系生成目标文件。
在第一编写makefile的过程中我遇到下面的两个问题,其实这也是新手常范的错误
1:在“:”后面不能用空格。
2:gcc 前面用空格代替了Tab,导致makefile执行失败。
下面是sum.c mul.c total.c 的代码内容
//sum.c
int sum_one(void)
{
int sum = ,i = ;
while(i<=)
{
sum += i;
++i;
}
return sum;
}
//mul.c
int mul_two(void)
{
return (****);
}
//total.c
#include"stdio.h" int main(void)
{
char ch ;
scanf("%c",&ch);
while(ch!=''&&ch!=''&&ch!='q'&&ch!='Q')
{
printf("input error,please enter again!");
scanf("%c",&ch);
}
switch(ch)
{
case '':
printf("The sum of from 1 to 10 is %d \n",sum_one());
break;
case '':
printf("The mul of 2 , 5, 8 ,10 ,14 is %d \n",mul_two());
break;
default: return ;
}
return ;
}
make执行过程

哈哈,第一个makefile
Linux 我的第一个makefile(Linux指令学习笔记)的更多相关文章
- Linux就该这么学--第五期 学习笔记
第一节:基础 <Linux就该这么学>第二期视频 Linux就该这么学第5期第二节: ------------你的价值:你对公司做出的共享和你的不可替代性------------瑞尔系统R ...
- Linux man 用法小结(Linux指令学习笔记)
今天买了一本<<Linux命令行与shell脚本编程大全>>,想利用暑假放假的时间系统的学习一下 Linux的shell脚本.今天看了一下书,才发现我之前学习,把Linux s ...
- Linux | Linux常用指令学习笔记
@ 目录 前言 1. Linux目录结构: 2. 运行级别: init.systemctl 3. vim相关快捷键: 4. 开关机相关命令: shutdowm.halt.reboot.sync.log ...
- Linux mkisofs 创建光盘镜像文件(Linux指令学习笔记)
mkisofs命令 创建光盘文件的系统的命令是mkisofs.光盘系统有多种格式,利用Linux系统提供的光盘文件系统创建 命令mkisofs,可以创建多种iso9660文件系统. 我们一般不用mki ...
- linux指令学习笔记(一)
1. 查看目录下有什么文件/目录 > ls //list列出目录的文件信息 > ls -l 或ll //list -list以“详细信息”查看目录文 ...
- 《Linux 性能优化实战—倪朋飞 》学习笔记 CPU 篇
平均负载 指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,即平均活跃进程数 可运行状态:正在使用CPU或者正在等待CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态 (Run ...
- 20179203李鹏举 《Linux内核原理与分析》第一周学习笔记
Linux基础入门 一.Linux的基础学习 1.1 Linux的重要基础操作 Linux不同于Windows的纯粹的图形化界面,虽然也有图形桌面的操作但是更多的操作还是通过命令行来进行,当然除了命令 ...
- 20179223《Linux内核原理与分析》第九周学习笔记
视频学习 进程调度与进程调度的时机分析 不同类型的进程有不同的调度需求 第一种分类: --I/O-bound:1.频繁的进行I/O:2.通常会花费很多时间等待I/O操作的完成 --CPU-bound: ...
- 20179223《Linux内核原理与分析》第四周学习笔记
补交第三周作业 完成一个简单的时间片轮转多道程序内核 1.使用实验楼的虚拟机打开shell,用cd LinuxKernel/linux-3.9.4进入linux-3.9.4. 2.执行命令qemu - ...
随机推荐
- POJ1651:Multiplication Puzzle(区间DP)
Description The multiplication puzzle is played with a row of cards, each containing a single positi ...
- QQ上传大文件为什么这么快
今天和同事在群里讨论“QQ上传大文件/QQ群发送大文件时,可以在极短的时间内完成”是如何做到的. 有时候我们通过QQ上传一个几百M的文件,竟然只用了几秒钟,从带宽上限制可以得出,实际上传文件是不可能的 ...
- MySQL(24):事务的隔离级别
1. 事务的隔离级别引入: 数据库是多线程并发访问的,所以很容易出现多个线程同时开启事务的情况,这样的就会出现脏读.重复读以及幻读的情况.在数据库操作中,为了有效保证并发读取数据的正确性,需要为事务设 ...
- c#代码使用ResourceDictionary样式
对于ResourceDictionary样式代码: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006 ...
- Java Script基础(十二) 正则表达式
一.正则表达式中常用的符号 虽然可以使用string函数来完成验证,但是这种验证方式不够严谨,而且编写比较麻烦.而正则表达式是一种描述字符模式的对象,由一些特殊的符号组成,其组成的字母模式用来匹配各种 ...
- .net MVC 下载文件乱码问题解决方案
public ActionResult OverAllSummaryExport(string id) { #region 解决中文乱码 Response.HeaderEncoding = Encod ...
- 给VPS装桌面
转自:百度经验 致谢! 1.首先我们要先升级一下软件源给安装桌面环境做准备. 执行命令:apt-get update 2.安装桌面环境或窗口管理器: apt-get install xubunt ...
- React Native学习-将 'screen', 'window' or a view生成图片
https://github.com/facebook/react-native/commit/ac12f986899d8520527684438f76299675dc0daa 这是react-nat ...
- POJ 3268 Silver Cow Party (Dijkstra)
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13982 Accepted: 6307 ...
- CentOS对新加入的硬盘格式化
[root@rac1 ~]# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OS ...