编写makefile的方法
来源:互联网 发布:南通东华软件 培训 编辑:程序博客网 时间:2024/04/27 21:54
编写makefile的一般方法
在这里通过编写一个简单的makefile实例,和大家交流学习编写makefile的方法
(1) 首先在程序员的心中必须知道源程序有几个模块构成
在此实例中源程序有3模块构成,分别是头文件 tou.h ,函数fun.c ,主函数main.c
(2) 编写程序的各个模块
1) 编写头文件
在此实例中头文件tou.h中包含了标准库库函数#include<stdio.h>
和要使用的函数的外部声明extern int add(int a,int b);
注意:以后要用到的所有库函数的头文件都写在这里,以后编写程序要添加库函数或者自定义的头文件都可以写在这里,方便省事。
2) 编写函数fun.c ,此函数实现的是两个数的加法运算
#include"tou.h"
int add(inta,int b)
{
return a + b;
}
注意:在此函数中fun.c 依赖tou.h这个头文件,弄清这个依赖关系后,为接下来编译工作的进行解决不小的麻烦
(3) 编写主函数 main.c
#include"tou.h"
int main()
{
inta=2,b=3;
a=add(a,b);
printf("%d\n",a);
return 0;
}
(4)以上三步完成了编写makefile的基础工作,这为编写makefile打下了基础
首先要理解gcc的编译流程
(1)预处理.预处理器将对源文件预处理
(2)编译.gcc将c文件编译成汇编文件,生成.S文件。
(3)汇编。将汇编语言文件汇编,生成目标文件.o文件
(4)连接。ld将目标文件和外部符号进行连接,得到一个可执行二进制文件
接下来要理解的就是makefile中的依赖关系,我们的目标是产生目标文件all,就是将文件所有的后缀名为.c文件,通过gcc编译命令,生成.o文件 ,再让所有的.O正确连接生成可执行文件。如果理解了这些我们的任务就完成了一大半。
all: main.o fun.o
gcc main.o fun.o -o all
可执行文件all 依赖由main.c和fun.c生成的main.o和fun.o文件
main.o: main.c fun.c tou.h
gcc -c main.c
main.o文件的生成又依赖main.c、fun.c和tou.h这三个文件
fun.o: tou.h
gcc -c fun.c
fun.o文件的生成又依赖tou.h这个文件
接下来的工作就是有关调试的了,如果程序的所有模块在编译额过程中出现了错误,需要清除已经产生文件就需要clean这个命令了,所以下面可以这样写
.PHONY:clean
clean:
rm-f *.o
将上述内容由上及下组合起来就组成了一个完整的makefile
all: main.o fun.o
gcc main.o fun.o -o all
main.o: main.c fun.c tou.h
gcc -c main.c
fun.o: tou.h
gcc -c fun.c
.PHONY:clean
clean:
rm-f *.o
以上就是编写makefile的过程,接下来的事情就是使用makefile了。
使用makefile
(1) 将main.c、fun.c和tou.h三个源程序文件和makefile放在同一个文件夹xuexi中,从终端中进入此文件,运行makefile即可产生可执行文件all,执行 all 即可,即./all
(2) 如果程序出现错误,可以使用clean命令清除产生的所有的.0文件,再执行步骤一即可
还有一些更好的编写makefile的方法,就是使用含参数的命令编写makefile,这里就不在多说了。还有gcc编译命令的使用方法可以参考其他资料。
- Makefile的编写方法
- 编写makefile的方法
- Makefile的编写方法
- Makefile文件的编写方法
- 多目录时Makefile 的编写方法
- 编写 makefile 方法
- makefile编写方法
- makefile原理及编写方法
- MakeFile的编写指导
- MakeFile的编写指导
- 编写Makefile的心得
- Makefile的编写
- Makefile文件的编写
- makefile的编写
- 编写vxworks的MakeFile
- Makefile的编写指导
- 编写简单的makefile
- Makefile的编写
- Google China New Grad Test 2014 Round A Problem E
- hdu2955 01背包变形
- 如何关闭应用程序本身 通过PostMessage函数可以实现
- android studio 升级
- java.lang.NullPointerException
- 编写makefile的方法
- STM32的中断配置的一些新理解
- 某程序设计语言中的pair是如下方式定义:type:=int|pair<type,type>.
- Problem B. Rational Number Tree -Calkin–Wilf tree 数节点编号 基本数据类型范围
- 110Meta-Loopless Sorts
- 静态类型语言、动态类型语言、强类型语言、弱类型语言【转】
- 另一种得到三个单通道图像的方法
- java并发编程中CountDownLatch和CyclicBarrier的使用
- 关于中文分词的统计和规则