关于Linux下对于makefile的理解

什么是makefile呢?在Linux下makefile我们可以把理解为工程的编译规则。一个工程中源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,那些文件需要先编译,那些文件需要后编译,那些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个shell脚本一样,其中也可执行操作系统的命令。

makefile带来的好处就是—“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大地提高了软件开发的效率。

make命令在执行时,需要一个makefile文件,以告诉make命令要怎样去编译链接程序。只要我们makefile写的足够好,make命令会自动智能的根据当前文件自己编译所需要的文件和链接目标文件。

makefile的规则:

?

target:prerequisites

 

  command

 

.......................

target是目标文件,prerequisites就是要生成target所需要的文件或是目标。command就是make需要执行的命令。这是一个文件依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。如果prerequisites中如果有一个以上的文件比target文件内容要新的话,command所定义的文件就会被执行。这就是makefile最核心的内容。

举个栗子:

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

file1.c:

?

#include<iostream>

 

int main()

 

{

 

file2printf();

 

return 0;

 

}

file2.h:

?

#ifndef FILE2_H_

 

#define FILE2_H_

 

void file2printf();

 

#endif

 

file2.c

 

#include"file2.h"

 

void file2printf()

 

{

 

printf("hello world!\n");

 

}

那么它的makefile怎么写呢?(makefile文件和文件在同一目录下)

test:file1.o file2.o          //test依赖file1.o和file2.o两个目标文件

  gcc -c file1.o file2.o -o test    //编译出test可执行文件,-o 表示指定的目标文件名

file1.o:file1.c file2.h          //编译出file1.o文件,file1.o依赖于file1.c和file2.h,-c表示GCC只把给他的文件编译成目标文件  

  gcc -c file1.c -o file1.o

file2.o:file2.c file2.h                       //这两句与上两句相同

  gcc -c file2.c -o file2.o

.PHONY:clean

clean:

rm -rf* .o test      //当输入make clean命令时,就会删除所有的.o文件和test文件了

注意:每个命令行之前都必须有tab符号。

这是简单的makefile的写法,其实makefile还有很多的功能注意点值得学习。大家可以下去自行学习

以上这篇关于Linux下对于makefile的理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

原创文章,作者:CSRZJ,如若转载,请注明出处:http://www.wangzhanshi.com/n/7565.html

(0)
CSRZJ的头像CSRZJ
上一篇 2025年1月1日 16:30:35
下一篇 2025年1月1日 16:30:37

相关推荐

  • Linux解压文件到指定目录的方法

    本文介绍了Linux解压文件到指定目录的方法,分享给大家,具体如下: tar在Linux上是常用的打包、压缩、加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数 参数: …

    Linux 2025年1月1日
  • Linux下如何调整根目录的空间大小

    一、目的 在使用CentOS6.3版本Linux系统的时候,发现根目录(/)的空间不是很充足,而其他目录空间有很大的空闲,所以本文主要是针对现在已有的空间进行调整。首先,先来查看一…

    Linux 2025年1月1日
  • Linux shell tr 命令详解

    Linux shell tr 命令详解 1. 用途 tr,translate的简写,主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作。 2. 语法 ? tr [OPT…

    Linux 2025年1月1日
  • Linux用户与最小权限原则解析

    Linux的用户在登录(login)之后,就带有一个用户身份(user ID, UID)和一个组身份(group ID, GID)。在Linux文件管理背景知识中,我们又看到,每个…

    2025年1月1日
  • Xshell实现Windows上传文件到Linux主机的方法

    写在前面,博主本身并没有开始做接口自动化测试,目前刚刚学完postman的教程,了解工具,现在脑海中基本上的框架是已经有了,因为我们知道postman的collection是可以命…

    2025年1月1日
  • 浅谈Linux的库文件

    最近在Linux下使用第三方库Protobuf时,遇到一个问题:可执行程序在运行时报错:“error while loading shared libraries: libprot…

    Linux 2025年1月1日
  • Linux 黑话解释:TTY 是什么?

    谈到 Linux 和 UNIX 时,你一定听说过 “TTY” 这个术语,但是,这玩意是什么? 作为一个桌面用户,它对你有用吗?你需要它吗?你能用它做什么? 在本文中,让我向你介绍这…

    2025年1月1日
  • Linux 环境变量详解及实例

    Linux环境变量 ? ~/.bash_profile && ~/.bashrc 用户登陆Linux操作系统的时候,”/etc/profile&#822…

    Linux 2025年1月1日
  • Linux 常用命令挂载命令详解

    查询与自动挂载 mount 查询系统中已经挂载的设备 mount -a 依据配置文件 /etc/fstab的内容,自动挂载 挂载命令格式 mount [-t 文件系统] [-o 特…

    2025年1月1日
  • linux配置ntp服务器的方法

    一.安装ntp软件 1.检查是否安装了ntp相关包。 rpm -qa | grep ntp 2.安装ntp软件。 yum -y install ntp 二.参数讲解 ignore …

    2025年1月1日

发表回复

登录后才能评论