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 - ...
随机推荐
- 用shell获取文件大小
ls -l filename | awk '{ print $5,$9 }' ls -l filename | awk '{ print $5 }'
- 想了解JAVA的,看看(转载)
较新一篇 / 较旧一篇 编辑 |删除 | 复制链接 公开 想了解JAVA的,看看(转载)2009-03-01 15:41 (分类:默认分类) 先总结一下: J2SE (Core/Desktop) ...
- SQL操作XML
前面一段时间为了赶项目的进度,一直在加班,现在空闲了下来将前面碰到的问题整理了一下,发现了一些十分有用的,在此记录下来,看能不能帮助到遇到同样问题的朋友,此文仅是自己个人的意见,若存在问题,还望不宁赐 ...
- oracle数据库常用SQL语句
1)删除表的一列 ALTER TABLE 表名 DROP COLUMN 列名; 2)增加表的一列 且默认值为0 alter table 表名 add 字段名 类型 default '0'; 3)修改表 ...
- 转载:solr MoreLikeThis的原理分析
转载地址:http://blog.sina.com.cn/s/blog_5ddc071f0101muos.html 在solr中有两种方式实现MoreLikeThis:MoreLikeThisHand ...
- 【开源项目7】Android视图注入库:butterknife
介绍 ButterKnife通过@InjectView和视图的ID注解的变量去找到并自动转换为你布局上相应的布局视图. class ExampleActivity extends Activity { ...
- 【Linux/Ubuntu学习2】ubuntu-ubuntu10.04使用wine安装SourceInsight
1. 环境:ubuntu10.04 2. 安装 wine 关于 wine ,请参考这里.通过网络安装: $ sudo apt-get install wine 3. 安装 SourceInsight ...
- 重构3-Pull Up Method(方法上移)
上移方法(Pull Up Method)重构是将方法向继承链上层迁移的过程.用于一个方法被多个实现者使用时 public abstract class Vehicle { // other metho ...
- Oracle基础(五) 权限管理
一.数据库权限分类 权限是指用户对某个功能是否具有执行的权利.在Oracle中,权限分为系统权限和对象权限. 1.系统权限 系统规定用户使用数据库的权限.例如创建表空间,创建表,删除表的权利.这些都属 ...
- JQuery方法扩展
第一种 extend <!-- extend 扩展jQuery,其实就是增加一个静态方法 --> 定义: $.extend({ sayHello:function(name) { aler ...