返回顶部
首页 > 资讯 > 操作系统 >Linux Makefile怎么写
  • 444
分享到

Linux Makefile怎么写

2023-06-17 00:06:54 444人浏览 安东尼
摘要

这篇文章主要介绍“linux Makefile怎么写”,在日常操作中,相信很多人在Linux Makefile怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux Makefile怎么写”的疑惑有所

这篇文章主要介绍“linux Makefile怎么写”,在日常操作中,相信很多人在Linux Makefile怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux Makefile怎么写”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

假设我们有一个程序由5个文件组成,源代码如下:

#include "mytool1.h"
#include "mytool2.h"
int main()
{
mytool1_print("hello mytool1!");
mytool2_print("hello mytool2!");
return 0;
}

#include "mytool1.h"
#include
void mytool1_print(char *print_str)
{
printf("This is mytool1 print : %s ", print_str);
}

#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str);
#endif

#include "mytool2.h"
#include
void mytool2_print(char *print_str)
{
printf("This is mytool2 print : %s ", print_str);
}

#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif

首先了解一下make和linux Makefile。GNU make是一个工程管理器,它可以管理较多的文件。我所使用的RedHat 9.0的make版本为GNU Make version 3.79.1。使用make的***好处就是实现了“自动化编译”。如果有一个上百个文件的代码构成的项目,其中一个或者几个文件进行了修改,make就能够自动识别更新了的文件代码,不需要输入冗长的命令行就可以完成***的编译工作。make执行时,自动寻找Makefile(makefile)文件,然后执行编译工作。所以我们需要编写Makefile文件,这样可以提高实际项目的工作效率。

在一个linux Makefile中通常包含下面内容:
1、需要由make工具创建的目标体(target),通常是目标文件或可执行文件。
2、要创建的目标体所依赖的文件(dependency_file)。
3、创建每个目标体时需要运行的命令(command)。
格式如下:
target:dependency_files
command
target:规则的目标。通常是程序中间或者***需要生成的文件名,可以是.o文件、也可以是***的可执行程序的文件名。另外,目标也可以是一个make执行的动作的名称,如目标“clean”,这样的目标称为“伪目标”。dependency_files:规则的依赖。生成规则目标所需要的文件名列表。通常一个目标依赖于一个或者多个文件。

command:规则的命令行。是make程序所有执行的动作(任意的shell命令或者可在shell下执行的程序)一个规则可以有多个命令行,每一条命令占一行。注意:每一个命令行必须以[Tab]字符开始,[Tab]字符告诉make此行是一个命令行。make按照命令完成相应的动作。这也是书写Makefile中容易产生,而且比较隐蔽的错误。命令就是在任何一个目标的依赖文件发生变化后重建目标的动作描述。一个目标可以没有依赖而只有动作(指定的命令)。比如Makefile中的目标“clean”,此目标没有依赖,只有命令。它所指定的命令用来删除make过程产生的中间文件(清理工作)。

在Makefile中“规则”就是描述在什么情况下、如何重建规则的目标文件,通常规则中包括了目标的依赖关系(目标的依赖文件)和重建目标的命令。make执行重建目标的命令,来创建或者重建规则的目标(此目标文件也可以是触发这个规则的上一个规则中的依赖文件)。规则包含了目标和依赖的关系以及更新目标所要求的命令。

Makefile中可以包含除规则以外的部分。一个最简单的Makefile可能只包含规则描述。规则在有些Makefile中可能看起来非常复杂,但是无论规则的书写是多么的复杂,它都符合规则的基本格式。

下面就可以写出***个Makefile了。
main:main.o mytool1.o mytool2.o
GCc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c
clean:
rm -f *.o main

在shell提示符下输入make,执行显示:
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o

执行结果如下:
[armlinux@lqm makefile-easy]$ ./main
This is mytool1 print : hello mytool1!
This is mytool2 print : hello mytool2!
这只是最为初级的Makefile,现在来对这个Makefile进行改进。

改进一:使用变量
一般在书写Makefile时,各部分变量引用的格式如下:
1. make变量(Mak1. make变量(Makefile中定义的或者是make的环境变量)的引用使用“$(VAR)”格式,无论“VAR”是单字符变量名还是多字符变量名。
2. 出现在规则命令行中shell变量(一般为执行命令过程中的临时变量,它不属于Makefile变量,而是一个shell变量)引用使用shell的“$tmp”格式。
3. 对出现在命令行中的make变量同样使用“$(CMDVAR)” 格式来引用。
OBJ=main.o mytool1.o mytool2.o
make:$(OBJ)
gcc -o main $(OBJ)
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c
clean:
rm -f main $(OBJ)

改进二:使用自动推导
让make自动推导,只要make看到一个.o文件,它就会自动的把对应的.c文件加到依赖文件中,并且gcc -c  .c也会被推导出来,所以Makefile就简化了。
CC = gcc
OBJ = main.o mytool1.o mytool2.o
make: $(OBJ)
$(CC) -o main $(OBJ)
main.o: mytool1.h mytool2.h
mytool1.o: mytool1.h
mytool2.o: mytool2.h
.PHONY: clean
clean:
rm -f main $(OBJ)

改进三:自动变量($^  $<  $@)的应用
Makefile 有三个非常有用的变量,分别是$@、$^、$<。代表的意义分别是:
$@--目标文件,
$^--所有的依赖文件,
$<--***个依赖文件。
CC = gcc
OBJ = main.o mytool1.o mytool2.o
main: $(OBJ)
$(CC) -o $@ $^
main.o: main.c mytool1.h mytool2.h
$(CC) -c $<
mytool1.o: mytool1.c mytool1.h
$(CC) -c $<
mytool2.o: mytool2.c mytool2.h
$(CC) -c $<
.PHONY: clean
clean:
rm -f main $(OBJ)

到此,关于“Linux Makefile怎么写”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Linux Makefile怎么写

本文链接: https://lsjlt.com/news/286544.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux Makefile怎么写
    这篇文章主要介绍“Linux Makefile怎么写”,在日常操作中,相信很多人在Linux Makefile怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux Makefile怎么写”的疑惑有所...
    99+
    2023-06-17
  • Linux下Makefile怎么用
    这篇文章主要为大家展示了“Linux下Makefile怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下Makefile怎么用”这篇文章吧。Makefile一个工程文件中的源文件可...
    99+
    2023-06-22
  • Linux下怎么生成Makefile
    这篇文章主要讲解了“Linux下怎么生成Makefile”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下怎么生成Makefile”吧!一、Makefile介绍Makefile是用于...
    99+
    2023-06-16
  • Linux中的Makefile怎么用
    这篇文章主要讲解了“Linux中的Makefile怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中的Makefile怎么用”吧!简而言之makefile的作用就是“自动编译”...
    99+
    2023-06-28
  • 用python写makefile
    温馨提示:阅读本文的同学最好能了解makefile和python的编写规则。不懂的同学可以先保存在收藏夹,以便日后查看。 其实之前我一直很懒,我不想了解makefile规则,因为在linux下开发我一直使用Qt creator。(很多时候...
    99+
    2023-01-31
    python makefile
  • Linux makefile问题怎么解决
    这篇文章主要讲解了“Linux makefile问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux makefile问题怎么解决”吧!将各个模块的关系写进makefile,...
    99+
    2023-06-17
  • linux怎么新建makefile文件
    在Linux系统中,使用文本编辑器(如vi、nano等)可以新建makefile文件。以下是一种常见的方法:1. 打开终端。2. 进...
    99+
    2023-09-17
    linux
  • Linux系统的Makefile怎么用
    这篇文章给大家分享的是有关Linux系统的Makefile怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Makefile就是在执行make命令的时候指定编译和链接的规则,包括源代码文件之间的链接关系、依赖关...
    99+
    2023-06-28
  • linux怎么运行makefile文件
    在Linux系统中,可以通过以下命令运行Makefile文件:1. 打开终端。2. 导航到包含Makefile文件的目录。可以使用`...
    99+
    2023-09-12
    makefile linux
  • linux中的makefile怎么使用
    在Linux中,Makefile是一种用来自动化编译和链接程序的工具。它可以根据程序的依赖关系来自动判断需要重新编译的文件,并生成可...
    99+
    2023-08-23
    linux makefile
  • Go怎么编写Makefile规则文件
    这篇“Go怎么编写Makefile规则文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go怎么编写Makefile规则文件...
    99+
    2023-06-30
  • Linux下Makefile的编写与使用详解
    目录MakefileMakefile文件命名和规则Makefile的工作原理Makefile变量Makefile函数Makefile clean规则Makefile 一个工程文件中的源文件可能有很多,并且不同的功能、模块...
    99+
    2022-06-04
    Linux下Makefile编写介绍 Linux系统Makefile使用介绍
  • Linux系统中怎么使用Makefile
    本篇内容介绍了“Linux系统中怎么使用Makefile”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.Makefile简介使用GNU M...
    99+
    2023-06-28
  • 怎么在Linux 中使用makefile命令
    这篇文章将为大家详细讲解有关怎么在Linux 中使用makefile命令,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。下面以\build\core\product.mk下面的内容为例介绍:&...
    99+
    2023-06-09
  • linux中的makefile是什么
    makefile是一个文件,用于指导编译器执行源代码文件的编译和链接过程。它是GNU make工具的配置文件,用来描述源代码文件之间...
    99+
    2023-08-22
    Linux
  • linux下makefile教程
    在Linux下,Makefile是一个用来管理源代码的工具,可以自动化编译和链接过程。它是由一系列规则组成的脚本,每个规则描述了源代...
    99+
    2023-09-13
    linux
  • linux中makefile指的是什么
    小编给大家分享一下linux中makefile指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在linux中,makefile是一个工程文件的编译规则,描...
    99+
    2023-06-21
  • makefile怎么使用
    这篇文章主要讲解了“makefile怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“makefile怎么使用”吧!概述什么是makefile?或许很多Winodws的程序员都不知道这个...
    99+
    2023-06-22
  • makefile编写规则有哪些
    在Makefile中,常见的规则有以下几种:1. 显式规则(Explicit Rule):指定一个或多个目标文件和依赖文件,并给出生...
    99+
    2023-09-12
    makefile
  • 跟我一起学写Makefile-Lesso
    [url]http://www.chinaunix.net[/url]...
    99+
    2023-01-31
    跟我一起 Makefile Lesso
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作