首页 / 操作系统 / Linux / Linux 程序设计学习笔记----动手编写makefile文件
Befroe Beginning.之前定了暑假的plan ,关于Linux的书籍现在在看的是ALP和Linux高级程序设计(杨宗德)第三版.在计划中的是Linux高级环境编程.现在开始关于Linux程序设计的第一篇学习笔记.本来打算把名字写成教程,不过觉得自己完全是新手在自学,还是写学习笔记比较负责和适合.希望可以一起学习进步.Linux程序设计(原书第2版)(PDF中文版 + 源码) http://www.linuxidc.com/Linux/2011-04/34147.htmu-boot Makefile完全解读 http://www.linuxidc.com/Linux/2013-04/83529.htm实验平台上Makefile详细的解释 http://www.linuxidc.com/Linux/2014-01/94827.htmMakefile之Linux内核模块的Makefile写法分析 http://www.linuxidc.com/Linux/2013-06/85842.htmMakefile之写demo时的通用Makefile写法 http://www.linuxidc.com/Linux/2013-05/84679.htmMakefile之大型工程项目子目录Makefile的一种通用写法 http://www.linuxidc.com/Linux/2013-05/84678.htm引入首先我们假设这样一个场景.我们有一个程序包含了三个文件,分别是源码文件main_plus,c和function_plus.c以及头文件mydefine_plus.h.其中main主要是调用功能函数,功能函数则是实现简单的累加,头文件声明函数和一些库函数.代码分别如下:main_plus.c/*************************************************************************
> File Name: main_plus.c
> Author: suool
> Mail: 1020935219@qq.com
> Created Time: 2014年07月23日 星期三 17时31分23秒
************************************************************************//**@file main_plus.c */
/** 接收参数,调用功能函数,输出结果. */#include "mydefine_plus.h"int main(void)
{
int a=0, b=0;
printf("这是一个求和的程序,请输入数字a和b,程序讲输出a到b的累加结果.
");
printf("Please enter integer a:");
scanf("%d", &a);
printf("
Please enter integer b:");
scanf("%d", &b);
if(a>b)
{
printf("
The sum is %d
", plus(b,a));
}
else
{
printf("
The sum is %d
", plus(a,b));
}
return 0;
}mydefine_plus.h./*************************************************************************
> File Name: mydefine_plus.h
> Author: suool
> Mail: 1020935219@qq.com
> Created Time: 2014年07月23日 星期三 17时36分16秒
************************************************************************/
/** @file mydefine_plus.h */
/** 函数声明和包含*/#ifndef _MYDEFINE_PLUS_H
#define _MYDEFINE_PLUS_H
#include <stdio.h>
int plus(int a, int b);
#endif现在我们要编译这个程序,我们可以怎么做呢?这就是这次要解决的问题.make文件编写对于上面的问题,我们传统的解决方法是这样的:即是分别编译这两个文件,然后链接变成目标可执行文件,当然,对于三个甚至五个的这样的程序都是可以的,但是如果对于更大的程序呢?或者我们修改了某个程序,难道要重新编写这些命令?显然,这不是一个明智的选择,因此,我们便导出make文件,即自动执行编译的文件.只要执行一下make命令,everything is done !so, let`s see how to do it.首先我们先把这个程序的文件的makefile文件贴一下,如下:makefilemain : main_plus.o function_plus.o
gcc -o main main_plus.o function_plus.o
main_plus.o : main_plus.c mydefine_plus.h
gcc -c main_plus.c
function_plus.o : function_plus.c mydefine_plus.h
gcc -c function_plus.c
clean:
rm -f *.o mainmakefile文件的注释是#后面的语句.有Makefile文件后,不管我们什么时候修改了源程序当中的什么文件,我们只要执行make命令,我们的编译器都只会去编译与我们修改的文件有关的文件,其它的文件不会处理.验证如下:先执行一次make命令,如下:这次自动编译了两个c文件,我们现在修改function_plus.c文件,再次执行make命令,结果如下:这次只是对刚刚修改的文件进行了编译.更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-07/104614p2.htm