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 - ...
随机推荐
- C++对象内存模型1(堆栈模型)
对象内存模型 一. 栈(Stack) VS. 堆(heap) 栈 由系统自动管理,以执行函数为单位 空间大小编译时确定(参数+局部变量) 函数执行时,系统自动分配一个stack 函数执行结束时,系统立 ...
- onkeyup,onkeydown和onkeypress
如下一段代码: <html> <script> function checkForm(){ if(event.keyCode ==13){ event.keyCo ...
- Burn the Linked Camp(bellman 差分约束系统)
Burn the Linked Camp Time Limit: 2 Seconds Memory Limit: 65536 KB It is well known that, in the ...
- Android 高级UI设计笔记22:Android 指示引导页(带圆点)
1. 引导页: 我们在安装某个软件首次运行时,大部分都会有一个引导页的提示,介绍软件新功能的加入或者使用说明等,支持滑动且下面会有几个圆点,显示共有多少页和当前图片的位置,类似如下效果: 2. 引导页 ...
- winform中DataGridView添加ComboBox的最终解决方案(点击ComboBox默认显示当前行的内容)
第一: 数据绑定ComBoBox控件 先在窗体设计时拖一个ComBoBox控件,然后在里面的ITEMS设好你要下拉项,或者从数据库中的表绑定,这个估计都会. 第二: // 将下拉列表框加入到DataG ...
- DataContractJsonSerializer和JavaScriptSerializer内部实现差异
定义一个下面这样的类,此类有Serializable属性,并且有一个属性的定义没有使用自动属性来实现. [Serializable] public class Users { public int U ...
- Linq中使用Left Join
use Test Create table Student( ID ,) primary key, ) not null ) Create Table Book( ID ,) primary key, ...
- 【Mood-18】github 使用指南
windows下使用教程: http://www.cnblogs.com/dongdong230/p/4211221.html repository not found error问题解决(需确定gi ...
- 从源码的角度解析View的事件分发
有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单的功能,ListView就不能滚动了?为什么图片轮播器里的图 ...
- ReentrantLock类的基本结构
ReentrantLock类是一个可重入互斥锁,它具有与使用synchronized()方法和语句访问隐式监视器锁相同的基本行为和语义,但是它的功能更强大.ReentrantLock由最近成功获得锁但 ...