菜鸟科技网

make命令安装步骤有哪些?

make 是一个自动化构建工具,它通过读取一个名为 Makefile 的文件来决定如何编译和链接程序,这比手动一条条输入 gcc 命令要高效和可靠得多,尤其是在大型项目中。

make命令安装步骤有哪些?-图1
(图片来源网络,侵删)

make 命令是什么?为什么需要它?

想象一下你有一个由多个源文件(如 a.c, b.c, c.c)组成的 C 语言项目,为了生成最终的可执行文件,你需要:

  1. 编译 a.c 生成 a.o
  2. 编译 b.c 生成 b.o
  3. 编译 c.c 生成 c.o
  4. 将所有 .o 文件链接起来生成最终程序,如 my_program

如果项目有几十个甚至上百个文件,每次修改一个文件后,你都需要手动记住并执行哪些编译和链接命令,这非常繁琐且容易出错。

make 命令就是为了解决这个问题而生的。

  • Makefile:是一个包含编译规则、依赖关系和执行命令的文本文件,它告诉 make:“要生成 A,需要先有 B 和 C,生成 B 的命令是...”。
  • make:是解释 Makefile 并执行命令的工具,当你运行 make 时,它会智能地检查哪些文件需要被重新编译,只执行必要的命令,大大提高了效率。

如何安装 make 工具?

大多数 Linux 发行版默认都安装了 make,但如果你的系统是极简安装或者不小心删除了,可以按照以下方式安装。

make命令安装步骤有哪些?-图2
(图片来源网络,侵删)

在基于 Debian/Ubuntu 的系统上

使用 apt 包管理器:

# 更新软件包列表
sudo apt update
# 安装 make
sudo apt install make

在基于 Red Hat/CentOS/Fedora 的系统上

使用 yumdnf 包管理器:

# 对于 CentOS 7 及更早版本
sudo yum install make
# 对于 Fedora 和 CentOS 8 及更新版本
sudo dnf install make

在基于 Arch Linux 的系统上

使用 pacman 包管理器:

sudo pacman -S make

验证安装

安装完成后,可以通过以下命令检查 make 的版本,以确认安装成功:

make命令安装步骤有哪些?-图3
(图片来源网络,侵删)
make --version

你会看到类似下面的输出:

GNU Make 4.3
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2025 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

make 的工作原理:一个简单的例子

让我们通过一个简单的 C 语言项目来理解 make 是如何工作的。

项目结构

my_project/
├── main.c
├── utils.c
├── utils.h
└── Makefile

源代码文件

main.c

#include <stdio.h>
#include "utils.h" // 引入头文件
int main() {
    printf("Hello from main!\n");
    print_message();
    return 0;
}

utils.h

#ifndef UTILS_H
#define UTILS_H
void print_message();
#endif

utils.c

#include "utils.h"
#include <stdio.h>
void print_message() {
    printf("This is a message from utils.c\n");
}

编写 Makefile

Makefile 的语法很关键,核心是目标依赖命令

# 定义一个变量,方便修改
CC = gcc
CFLAGS = -Wall -g
# 这是第一个目标(也是默认目标),用于生成最终的可执行文件
# 目标: 依赖列表
# [tab] 命令
my_program: main.o utils.o
    $(CC) $(CFLAGS) -o my_program main.o utils.o
# main.o 依赖于 main.c 和 utils.h
main.o: main.c utils.h
    $(CC) $(CFLAGS) -c main.c
# utils.o 依赖于 utils.c 和 utils.h
utils.o: utils.c utils.h
    $(CC) $(CFLAGS) -c utils.c
# 一个特殊的目标 "clean",用于清理编译过程中产生的中间文件
# 它没有依赖,只有命令
clean:
    rm -f *.o my_program

Makefile 语法解析:

  • CC = gcc: 定义一个变量 CC,值为 gcc,后面可以通过 $(CC) 来引用它。
  • my_program: main.o utils.o: 定义一个目标 my_program,它依赖于 main.outils.o,意思是:要生成 my_program,必须先确保 main.outils.o 都是最新的。
  • $(CC) ...: 这是生成该目标要执行的命令注意:命令行前面必须是一个 Tab 键,不能用空格代替!
  • main.o: main.c utils.h: 另一个目标,main.o 依赖于 main.cutils.hmain.cutils.h 比当前的 main.o 文件新,就需要重新执行下面的命令来编译。
  • clean:: 这是一个自定义的清理目标。make clean 会执行下面的 rm 命令,删除所有 .o 文件和最终的可执行文件。

使用 make 进行构建

  1. 首次编译my_project 目录下,直接运行 make

    make

    make 会分析 Makefile,发现 my_program 不存在,所以需要它的依赖 main.outils.o,接着发现这些 .o 文件也不存在,于是会执行对应的编译命令。

    你会看到类似这样的输出:

    gcc -Wall -g -c main.c
    gcc -Wall -g -c utils.c
    gcc -Wall -g -o my_program main.o utils.o
  2. 修改后重新编译 现在让我们修改 main.c,比如在 printf 语句前加一行注释:

    #include <stdio.h>
    #include "utils.h"
    int main() {
        // A new comment
        printf("Hello from main!\n");
        print_message();
        return 0;
    }

    再次运行 make

    make

    这次 make 会智能地发现只有 main.c 被修改了,所以它只会重新编译 main.c 生成 main.o,然后用最新的 main.o 和已经存在的 utils.o 来链接 my_program

    输出会是这样:

    gcc -Wall -g -c main.c
    gcc -Wall -g -o my_program main.o utils.o

    这就是 make 的核心优势:增量编译,只更新发生改变的部分。

  3. 清理编译文件 当你想重新开始编译,或者想删除所有中间文件时,可以运行:

    make clean

    输出:

    rm -f *.o my_program

安装开源软件的标准流程

当你下载一个开源软件源码包时(通常是 .tar.gz.tar.bz2 格式),安装过程通常遵循以下三步,这被称为 GNU 构建系统

  1. ./configure配置阶段

    • 这个脚本会检查你的系统环境(比如是否有 gccmake,库文件在哪里等)。
    • 它会根据你的需求生成一个专用的 Makefile 文件,你可以通过给 configure 传递参数来指定安装路径、启用/禁用某些功能等。
    • 示例./configure --prefix=/usr/local/my_app (将软件安装到 /usr/local/my_app 目录下)
  2. make编译阶段

    • make 命令会读取刚刚生成的 Makefile 文件,将所有的源代码文件(.c, .cpp 等)编译成机器码(.o 文件),并最终链接成可执行文件或库文件。
    • 这个过程可能需要一些时间,尤其是在大型项目中。
  3. sudo make install安装阶段

    • make install 命令会执行 Makefile 中定义的 install 目标。
    • 它会把编译好的文件(可执行文件、库文件、配置文件、文档等)复制到系统指定的目录中(如 /usr/bin, /usr/lib, /etc 等)。
    • 因为通常需要写入系统目录,所以需要 sudo 权限。

总结一下标准流程:

# 1. 解压下载的源码包
tar -xvf software-version.tar.gz
cd software-version
# 2. 运行配置脚本,生成 Makefile
./configure
# 3. 执行 make,进行编译
make
# 4. 执行 make install,将编译好的文件安装到系统
sudo make install
  • make 是一个强大的构建工具,通过读取 Makefile 来自动化编译和链接过程。
  • 它的核心优势是增量编译,只重新编译发生变化的文件,节省时间。
  • 在 Linux 上安装 make 很简单,通常使用系统自带的包管理器即可。
  • 安装开源软件的标准三步曲是 ./configure -> make -> sudo make install,这套流程背后依赖的就是 makeMakefile 机制。
分享:
扫描分享到社交APP
上一篇
下一篇