简单的linux驱动和应用程序的Makfile编写

这两天写程序感觉一个一个编译程序还是挺麻烦,看了看Makefile的编写,同时参考了一下网友的博客,如果看到类似的别喷我啊,哈哈,所以说只是很简单的、入门级的Makefile编写,至于Makefile的功能什么的我就不介绍了,Google、百度吧。如果你是高手那就指正指正,那我就谢谢你了,哈哈。好吧咱们开始吧。

主要内容:

1.编写一个简单的应用程序的Makefile;

2.编写一个简单的驱动程序的Makefile。

所用环境:

1.linux主机:虚拟机中装的32位fedora14;

2.编译驱动的linux源码为:linux3.0.8

应用程序Makefile:

先把应用程序贴出来吧,很简单就打印一句话,但是是分为3个文件完成的,这里只是为了说明问题,代码如下:

//这是名为main的.c文件
#include "mytest.h"  
  
int main(int argc,char **argv)  
{  
    myprintf("Hello world!");  
}  
  
  
//这是mytest的.h文件 
#ifndef _MYTEST_H_ 
#define _MYTEST_H_  

#include <stdio.h>

void myprintf(char *str);  
#endif  
   
  
//这是mytest的.c文件 
#include "mytest.h"  
void myprintf(char *str)  
{  
    printf("The string is: %s\n",str);  
}  
上面的程序你可以这样编译,过程如下:

gcc -c main.c
gcc -c mytest.c
gcc -o main main.o mytest.o
这种方式当然可以编译出来,但是如果你的文件很多,比如说有mytest1.c、mytest2.c、....mytest100.c这么多个文件组成的一个比较大的程序,你在这样编译那就不是很轻松了,而且在调试的时候不是说一次编译就能搞定,而是需要很多次的。这就是Makefile出现的原因。那怎么编写Makefile文件呢?我先把为 上面程序编写的Makefile贴出来啊,接下来再做详细介绍一下。

main: main.o mytest.o 
	gcc -o main main.o mytest.o 
main.o: main.c mytest.h  
	gcc -c main.c  
mytest.o: mytest.c mytest.h  
	gcc -c mytest.c  
clean:
	rm -r main *.o
上面的这就是编写的Makefile了,有Makefile后,你仅仅需要make一下就可以编译整个程序了,而且当你仅仅改变其中的一个源文件时,编译时就仅仅编译改变的文件,而不需要编译其他的。好吧,下边就介绍介绍怎么编写吧。规则如下:

1.Makefile中“#”用做注释,相当于写c文件中的“//”;

2.Makefile中的依赖关系的格式为:

target: components

TAB rule

所谓依赖关系就是要生成目标文件需要那些文件,就比如说你需要写程序时需要那个头文件一样。第一行中的target表示目标,后面的component表示所依赖的文件,就比如说前面贴出来的Makefile中的:main: main.o mytest.o 中,main就要生成的目标文件了,依赖文件就是main.o mytest.o。第二行表示的编译的规则,就比如说编译时怎么优化等,在上面贴出来的Makefile中的第二行:gcc -o main main.o mytest.o就是编译规则了,也就是上面的“rule”了,TAB就是Tab键了,这里一定注意一下啊,一定要是Tab键,否则make时出错。

本来要一篇博客写完的,但好像有点长了,那就再续一篇吧,下篇介绍驱动的Makefile编写,下篇见喽!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值