提前认识软件开发(17) makefile文件的书写及应用

makefile用于Linux下整个工程的编译,对于Linux下的C/C++语言的编译是至关重要的。

本文以实际的C源程序为例子,介绍如何使用makefile来编译Linux下的C语言工程,为相关开发工作的开展提供了参考。

一、什么是makefile?

makefile是什么?如果你写的程序只是在Windows下运行,那么很有可能不知道有这个玩意儿。而如果你要在Linux下编译并运行程序,那么你几乎不可避免地要和makefile打交道。

makefile是一个文件,里面定义了一系列的规则来指定一个工程中的哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更为复杂的功能操作。简单点说,makefile就是Linux下的一个编译调度器。

二、makefile的语法规则

既然是一个编译调度器,那么它就会有自己的一套规则。makefile的规则如下:

target ... : prerequisites ...

command

......

......

说明:

(1) target就是一个目标文件,也就是在这个步骤中,我们想要输出的文件名(可以包括后缀)。

(2) prerequisites是要生成那个target所需要的文件,相当于在Windows工程下我们要得到exe文件所需要的源代码文件。

(3) command是make需要执行的命令,也就是如何利用prerequisites来生成target。注意,command行要以TAB键开头。

三、C程序源代码

本文以一个实际的Linux下的C程序工程为例,介绍makefile的编写方法及用法。

本文中的程序实现将一个字符串中的小写字母转换成大写字母的功能。有两个头文件:TestMakeFileMore1.h和TestMakeFileMore2.h,放在“head”目录下;有两个源文件:TestMakeFileMore1.c和TestMakeFileMore2.c,分别放在“exec1”和“exec2”目录下。

该工程TestMakeFileMore的组织形式如图1所示(“release”目录用于存放生成的文件)。

图1 该工程的组织形式

1. “TestMakeFileMore1.h”文件代码内容

/**********************************************************************

* 版权所有 (C)2014, Zhou Zhaoxiong。

*

* 文件名称: TestMakeFileMore1.h

* 文件标识:无

* 内容摘要:将输入字符串中的大写字母变成小写字母

* 其它说明:无

* 当前版本: V1.0

* 作    者: Zhou Zhaoxiong

* 完成日期: 20140430

*

* 修改记录1:// 修改历史记录, 包括修改日期、版本号、修改人及修改内容

* 修改日期: 20140430

* 版本号: V1.0

* 修改人: Zhou Zhaoxiong

* 修改内容:创建

**********************************************************************/

#ifndef _TESTMAKEFILEMORE1_H_       // 防止头文件被重复引用

#define _TESTMAKEFILEMORE1_H_

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

// 重新定义数据类型

typedef unsigned char  UINT8;

typedef          int   INT32;

typedef unsigned int   UINT32;

#endif

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索linux
, 编译
, 文件
, makefile
, c语言程序修改
, 为什么会有两个日期了
, makefile文件
, makefile模式规则问题
, linux makefile
, 工程
, android.mkndk编译makefile
, 一个
, typedef用法
头字母
makefile书写、认识的哥哥17年从哪看、深圳17号线地铁提前、9.17快速锁定带提前量、认识的哥哥17,以便于您获取更多的相关知识。

时间: 2024-11-01 03:45:12

提前认识软件开发(17) makefile文件的书写及应用的相关文章

让你提前认识软件开发(17):makefile文件的书写及应用

第1部分 重新认识C语言 makefile文件的书写及应用   [文章摘要]         makefile用于Linux下整个工程的编译,对于Linux下的C/C++语言的编译是至关重要的.        本文以实际的C源程序为例子,介绍如何使用makefile来编译Linux下的C语言工程,为相关开发工作的开展提供了参考.   [关键词]         makefile  C语言  Linux  编译  开发   一.什么是makefile?         makefile是什么?如果

提前认识软件开发(1) 序言

序言 正式踏上软件开发岗位已经将近两年了,经历了很多,也学到了很多."万事开头难",学生转变为职业人的过程,恰似茧化成蝶的过程. 1.为什么要写作本系列? 在工作的过程中,我发现我们在学校里面学到的很多东西片面肤浅,根本达不到岗位的要求.像编码规范.研发流程等等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要. 在学校里面,我们欠缺的教育主要包括以下方面: 第一,对编码规范的要求.计算机编程课上,老师只要求学生能够编写程序实现既定的功能即可,几乎不会对编码规范提出要求,

让你提前认识软件开发(1):序言

序言           正式踏上软件开发岗位已经将近两年了,经历了很多,也学到了很多."万事开头难",学生转变为职业人的过程,恰似茧化成蝶的过程.          1.为什么要写作本系列?        在工作的过程中,我发现我们在学校里面学到的很多东西片面肤浅,根本达不到岗位的要求.像编码规范.研发流程等等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要.        在学校里面,我们欠缺的教育主要包括以下方面:        第一,对编码规范的要求.计算机编程

让你提前认识软件开发(18):C语言中常用的文件操作函数总结及使用方法演示代码

第1部分 重新认识C语言 C语言中常用的文件操作函数总结及使用方法演示代码           在C语言中,有关文件操作的函数多达数十种,但并非每个函数都经常会被用到.        本文对实际软件开发项目中常用的C文件操作函数的用法进行了总结,并用实际的C代码来演示了它们的用法.   1. C语言中常用的文件操作函数总结 (1) fopen 作用:打开文件. 表头文件:#include <stdio.h> 定义函数:FILE *fopen(const char *path, const ch

提前认识软件开发(29) 数据库脚本文件的布局

"没有规矩,不成方圆",规范数据库脚本文件的代码布局具有以下重要意义: (1) 可表现出代码良好的逻辑结构,提高代码的准确性.连续性.可读性及可维护性. (2) 有利于提高产品的开发质量和效率,并降低开发成本. (3) 对于开发人员来说,养成良好的脚本编写习惯有助于提高个人的数据库脚本编程水平,进而提高脚本编程效率. 可见,统一的.良好的脚本代码布局和风格不仅仅是个人主观美学或形式上的问题,而且影响到产品的质量,并涉及到自身脚本编程能力的提高. 1. 脚本布局顺序概述 在实际的软件开发

提前认识软件开发(12) 配置文件读取及文件操作

在通信领域的软件开发项目中,C语言是主流的编程语言,而文件操作在其中又占有很重要的地位.此外,为了体现产品的灵活性,可添加配置文件对某些重要的参数进行按需配置.这就要求程序能够准确读取到各个配置项的值. 本文以一个实际的小软件为例,介绍了C语言中配置文件的读取方法和重要的文件操作函数的使用方法,为相关软件开发项目提供了有益的参考. 1.前言 在一般的软件项目中,常常需要用C语言对文件进行操作.在诸如对账之类的程序中,尤其如此.而C语言中有关文件操作的函数多达数十种,熟悉常用函数(如fopen.f

让你提前认识软件开发(22):shell脚本中的文件操作

第1部分 重新认识C语言 shell脚本中的文件操作   [文章摘要]         编写shell脚本时,经常会涉及到对文件的操作,比如从文件中读取一行数据.向文件追加一行数据等.完成文件读写操作的方法有很多,了解各种命令下文件操作的执行情况,有助于开发人员在不同使用场景下选择合适的命令.        本文以实际的shell脚本为例,介绍了对文件进行操作的不同方法,为相关开发工作提供了参考. [关键词]        shell  文件操作  读写  效率   一.概述         在

让你提前认识软件开发(29):数据库脚本文件的布局

第2部分 数据库SQL语言 数据库脚本文件的布局          "没有规矩,不成方圆",规范数据库脚本文件的代码布局具有以下重要意义:         (1) 可表现出代码良好的逻辑结构,提高代码的准确性.连续性.可读性及可维护性.         (2) 有利于提高产品的开发质量和效率,并降低开发成本.         (3) 对于开发人员来说,养成良好的脚本编写习惯有助于提高个人的数据库脚本编程水平,进而提高脚本编程效率.         可见,统一的.良好的脚本代码布局和风格

提前认识软件开发(16) 如何对程序进行优化

对程序进行优化,是软件开发工程师必然会涉及到的问题.那么为什么要对程序进行优化呢?原因有以下几个: 第一,在原程序基础之上新增.删除或修改了功能,需要改变原程序流程.客户需求随时可能会变化,今天已经实现的功能,说不定明天就要修改或去掉.落实到程序上面,就需要我们随时准备对写好的代码进行修改,而不要奢望写好之后就永远不要动了. 第二,原程序有bug.这类情况出现得非常的频繁,很多软件有1.0.2.0.3.0等版本,部分原因就是前面版本中程序有问题,在修改程序的过程中使得软件版本不断升级. 第三,原