`
iaiai
  • 浏览: 2203951 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux平台makefile文件的编写基础篇

 
阅读更多
目的:基本掌握了 make 的用法,能在Linux系统上编程。

环境:Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。

准备:准备三个文件:file1.c, file2.c, file2.h

file1.c:
#include <stdio.h>
#include "file2.h"
int main(){
	printf("print file1 $$$$$$$$\n");
	File2Print();
	return 0;
}


file2.h:
#ifndef FILE2_H_
#define FILE2_H_
	#ifdef __cplusplus
		extern "C" {
	#endif
	void File2Print();
	#ifdef __cplusplus
		}
	#endif
#endif


file2.c:
#include "file2.h"
void File2Print(){
	printf("Print file2 $$$$$\n");
}


先来个例子:有这么个makefile文件。(文件和makefile在同一目录)
helloworld: file1.o file2.o
	gcc file1.o file2.o -o helloworld
file1.o: file1.c file2.h
	gcc -c file1.c -o file1.o
file2.o: file2.c file2.h
	gcc -c file2.c -o file2.o

clean:
	rm -rf *.o helloworld

一个makefile主要含有一系列的规则,如下:
A: B
(tab)<command>
(tab)<command>

每个命令行前都必须有tab符号。
上面的makefile文件目的就是要编译一个helloworld的可执行文件。让我们一句一句来解释:

helloworld : file1.o file2.o:helloworld依赖file1.o file2.o两个目标文件。

gcc File1.o File2.o -o helloworld:编译出helloworld可执行文件。-o表示你指定 的目标文件名。

file1.o : file1.c:file1.o依赖file1.c文件。

gcc -c file1.c -o file1.o:编译出file1.o文件。-c表示gcc 只把给它的文件编译成目标文件, 用源码文件的文件名命名但把其后缀由“.c”或“.cc”变成“.o”。在这句中,可以省略-o file1.o,编译器默认生成file1.o文件,这就是-c的作用。

file2.o : file2.c file2.h
gcc -c file2.c -o file2.o
这两句和上两句相同。


clean:
rm -rf *.o helloworld
当用户键入make clean命令时,会删除*.o 和helloworld文件。

如果要编译cpp文件,只要把gcc改成g++就行了。
写好makefile文件,在命令行中直接键入make命令,就会执行makefile中的内容了。
到这步我想你能编一个Helloworld程序了。
分享到:
评论

相关推荐

    Linux平台Makefile文件的编写基础篇

    ### Linux平台Makefile文件的编写基础篇 #### 知识点概述 本篇文章将围绕Linux平台下Makefile文件的基础编写技巧展开,旨在帮助读者更好地理解并掌握如何利用Makefile进行C语言程序的编译管理。Makefile作为一种...

    linux系统下Makefile的编写指导

    本篇文章将深入探讨如何在Linux环境下编写Makefile,以及相关的重要概念和最佳实践。 一、Makefile基础 1. **目标(Target)与依赖项(Dependency)** Makefile中的每一行通常表示一个规则,由目标和依赖项组成。...

    make命令及makefile文件

    通过本篇文章的学习,我们不仅了解了`make`命令的基本用法,还深入探讨了`makefile`文件的编写技巧。无论是简单的单文件项目还是复杂的多模块项目,都可以通过合理地设计`makefile`来实现自动化构建。这不仅提高了...

    Linux下C语言编译基础及makefile的编写.doc

    在Linux环境下进行C语言编程,通常...通过学习Linux下的C语言编译基础和Makefile的编写,开发者可以更高效地管理和构建C语言项目,无论项目规模大小。熟练掌握这些技能,对于提升软件开发的生产力和维护性至关重要。

    Linux内核Makefile语法分析

    本篇内容将深入解析Linux内核Makefile中的关键概念、变量定义、操作符含义以及条件判断等核心元素。 #### 变量定义与赋值 在Linux内核Makefile中,变量定义非常常见,通常用于存储版本号或其他配置信息。例如: `...

    linux下构建多目录下Makefile产生a静态库样例

    在Linux环境下,构建多目录下的Makefile以生成静态库是一项常见的任务,特别是在开发大型软件项目时。本篇文章将深入探讨如何使用GCC编译器和Makefile工具来完成这个过程。 首先,我们需要理解静态链接库(.a文件)...

    linux C基础篇

    Linux C基础篇是针对初学者设计的一门课程,旨在教授Linux操作系统的基本概念和C语言的基础知识。Linux是一种开源、免费的操作系统,它以其稳定性和灵活性在服务器领域广泛应用,同时也是开发人员进行软件开发的重要...

    linux常用c函数及跟我一起写makefile

    本篇文章将深入探讨Linux环境下的常用C函数以及如何编写Makefile,帮助你更好地理解和应用这些知识。 一、Linux常用C函数 1. 文件操作:在Linux中,C语言提供了大量的文件操作函数,如`fopen()`用于打开文件,`...

    简单易懂的makefile教程

    这篇文章将对makefile的基本概念、编写方法以及它在程序编译和链接中的作用进行介绍。 首先,makefile定义了一系列的规则来指定编译过程中哪些文件需要先编译,哪些需要后编译,以及哪些需要重新编译。这不仅极大地...

    makefile经典扫盲贴

    本篇文章将深入解析Makefile的基础知识,帮助初学者理解并掌握如何编写Makefile。 首先,我们要了解Makefile的基本结构。一个基本的Makefile通常包含目标(target)、依赖文件(dependencies)和命令(commands)。...

    Makefile入门与提高

    尤其在Unix/Linux环境中,掌握Makefile对于提高开发效率至关重要。Makefile通过定义文件之间的依赖关系以及编译规则,实现了复杂的编译流程自动化。 **为什么学习Makefile很重要?** 1. **自动化编译**:通过编写...

    Linux下的C语言编程--基础知识篇.doc

    Linux下的C语言编程基础知识篇 本文将详细介绍在Linux下进行C语言编程所需要的基础知识,包括源程序编译、Makefile的编写、程序库的链接、程序的调试、头文件和系统求助等内容。 一、源程序的编译 在Linux下,...

    makefile 文档

    ### Makefile核心概念与实践 #### 一、Makefile概览 Makefile 是一种用于自动化构建过程的脚本文件,广泛应用于软件项目管理...希望这篇概述能够帮助读者理解和掌握 Makefile 的基础知识及其在实际项目中的应用价值。

    简单易懂的makefile教程.pdf

    本文将详细讲解Makefile的基础知识和编写规范,帮助读者快速掌握Makefile的编写技巧。 首先,我们来了解一下什么是makefile。在Windows操作系统中,由于IDE环境如Visual Studio等通常已经包含了项目的构建工具,...

    makefile应用

    Makefile 是一种用于自动化构建过程的脚本文件,在 Linux 和 Unix 环境下尤其常见。它能够帮助开发者有效地管理复杂的项目,特别是在涉及到多个源文件、库和其他资源的情况下。Makefile 文件通过定义一系列规则来...

    makefile的写法

    本篇文章将详细介绍`Makefile`的编写方法及其核心概念,帮助你理解和掌握这一技能。 `Makefile`的基础结构通常包含规则(rules)和变量(variables)。规则定义了如何从一个或多个源文件生成目标文件,而变量则用来...

    跟我一起写Makefile

    《跟我一起写Makefile》是陈皓撰写的一篇详尽指南,由祝冬华于2005年10月14日整理,旨在帮助学习Linux的用户掌握Makefile的编写技巧,它是Linux开发环境中不可或缺的一部分,用于自动化构建项目。本文将深入探讨该...

Global site tag (gtag.js) - Google Analytics