博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
论Makefile的重要性(一)-----Linux C开发
阅读量:5080 次
发布时间:2019-06-12

本文共 1888 字,大约阅读时间需要 6 分钟。

  我们在开发程序的过程中,一般使用IDE较多,用C++、C#的使用Vistual Studio2012或者更高版本,用Java的使用Eclipse。一般企业使用这些IDE较多。但是在Linux环境下编程,我们使用什么呢,刚接触Makefile的时候感觉这货很神奇。用的久了就会发现话会大大的提高开发项目的效率,有人会说,我们一般不开发大型项目,就是写点小程序,用不着使用什么Makefile,但是如果你用过一次,我相信你会爱不释手,如果你掌握了如何编写Makefile,会对你将来的开发生涯有莫大的帮助,接下来咱们进入正题。

  在C/C++语言开发过程中,我们首先是把源文件编译成中间代码,在Windows下就是.obj文件,Linux下就是.o文件,即目标文件(object file),然后将 大量的.obj/.o文件通过链接(link)生成可执行文件。

  Makefile的规则:

target(目标):prerequisites(依赖/条件)

    command (命令)

其中target是object file,可以依赖多个目标文件,prerequisites是生成target所需的文件或目标。command就是make要执行的命令。下面举例说明:

创建一个工程math,其中包含5个.c文件和一个.h文件。

sub.cint sub(int a, int b){    return a-b;}mul.cint mul(int a, int b){    return a*b;}div.cint devl(int a, int b){    return a/b;}add.cint add(int a, int b){    return a+b;}
main.cint main(void){  printf("add:%d\n",add(1,2));  printf("sub:%d\n",sub(1,2));  printf("mul:%d\n",mul(1,2));  printf("div:%d\n",div(1,2));}

 

 

common.h#ifndef MYMATH_H_#define MYMATH_H_int add(int a, int b);int sub(int a, int b);int mul(int a, int b);int devl(int a, int b);#endif

 

以下就是makefile的最简单写法:

libmath.a:add.o sub.o mul.o devl.o	ar rcs libmath.a add.o sub.o mul.o devl.oadd.o:add.c	gcc -c add.csub.o:sub.c	gcc -c sub.cmul.o:mul.c	gcc -c mul.cdevl.o:devl.c	gcc -c devl.c.PHONY:cleanclean:	rm -f add.o sub.o mul.o devl.o

 

在make之前  yun@Kyrie:~/yunfan/mf$ ls  add.c  common.h  div.c  main.c  Makefile  mul.c  sub.c 在make之后   yun@Kyrie:~/yunfan/mf$ make     gcc -c add.c     gcc -c sub.c     gcc -c div.c     gcc -c mul.c    ar rcs libyunfan.a add.o sub.o div.o mul.o yun@Kyrie:~/yunfan/mf$ ls add.c  common.h  div.o        main.c    mul.c  sub.c add.o  div.c     libyunfan.a  Makefile  mul.o  sub.o yun@Kyrie:~/yunfan/mf$ make clean rm -f add.o sub.o div.o mul.o yun@Kyrie:~/yunfan/mf$ ls add.c  common.h  div.c  libyunfan.a  main.c  Makefile  mul.c  sub.c 如果修改其中一个.c后,在执行make时,与此.c的所有文件都会重新编译。

 

转载于:https://www.cnblogs.com/KyrieHe/p/5766805.html

你可能感兴趣的文章
用JS制作博客页面背景随滚动渐变的效果
查看>>
JavaScript的迭代函数与迭代函数的实现
查看>>
一步步教你学会browserify
查看>>
Jmeter入门实例
查看>>
亲近用户—回归本质
查看>>
中文脏话识别的解决方案
查看>>
CSS之不常用但重要的样式总结
查看>>
Python编译错误总结
查看>>
URL编码与解码
查看>>
日常开发时遇到的一些坑(三)
查看>>
Eclipse 安装SVN插件
查看>>
深度学习
查看>>
TCP粘包问题及解决方案
查看>>
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>