2.3. 从源构建软件


在软件构建过程中,源代码被转换为可以使用 RPM 打包的软件工件。

2.3.1. 从原生编译的代码构建软件

您可以使用以下方法之一将使用编译语言编写的软件构建成可执行文件:

  • 手动构建
  • 自动化构建

2.3.1.1. 手动构建一个 C 程序示例

您可以使用手动构建来构建使用编译语言编写的软件。

使用 C 编写的 Hello World 程序示例(cello.c)包含以下内容:

#include <stdio.h>

int main(void) {
    printf("Hello World\n");
    return 0;
}
Copy to Clipboard Toggle word wrap

流程

  1. 从 GNU Compiler Collection 调用 C 编译器,将源代码编译到二进制中:

    $ gcc -g -o cello cello.c
    Copy to Clipboard Toggle word wrap
  2. 运行生成的二进制文件 cello

    $ ./cello
    Hello World
    Copy to Clipboard Toggle word wrap

2.3.1.2. 为示例 C 程序设置自动构建

大规模软件通常使用自动构建。您可以通过创建 Makefile 文件,然后运行 GNU make 实用程序来设置自动构建。

流程

  1. 在与 cello.c 相同的目录中,创建包含以下内容的 Makefile 文件:

    cello:
    	gcc -g -o cello cello.c
    clean:
    	rm cello
    Copy to Clipboard Toggle word wrap

    请注意,cello:clean: 下的行必须以制表符(tab)开头。

  2. 构建软件:

    $ make
    make: 'cello' is up to date.
    Copy to Clipboard Toggle word wrap
  3. 因为构建已在当前目录中可用,所以请输入 make clean 命令,然后再次输入 make 命令:

    $ make clean
    rm cello
    
    $ make
    gcc -g -o cello cello.c
    Copy to Clipboard Toggle word wrap

    请注意,此时尝试再次构建程序无效,因为 GNU make 系统检测到现有的二进制文件:

    $ make
    make: 'cello' is up to date.
    Copy to Clipboard Toggle word wrap
  4. 运行程序:

    $ ./cello
    Hello World
    Copy to Clipboard Toggle word wrap

2.3.2. 解释源代码

您可以使用以下方法之一将解释编程语言编写的源代码转换为机器码:

  • 字节编译

    字节软件的流程因以下因素而异:

    • 编程语言
    • 语言虚拟机
    • 与该语言一起使用的工具和流程

      注意

      您可以字节编译的软件,例如在 Python 中。用于分发的 Python 软件通常是字节编译的,但这不是以本文档中介绍的方法。上述流程目的不是为了符合社区标准,而是为了简单。有关实际工作环境中的 Python 指南,请参阅打包和发布

    您还可以原始解释 Python 源代码。但是,字节编译的版本速度更快。因此,RPM 软件包程序更喜欢将字节编译的版本打包,来分发给最终用户。

  • 原始解释

    使用 shell 脚本语言(如 Bash)编写的软件始终由原始解释执行。

2.3.2.1. 字节编译一个 Python 程序示例

通过对 Python 源代码选择字节编译而不是原始解释,您可以创建更快的软件。

使用 Python 编程语言(pello.py)编写的 Hello World 程序示例具有以下内容:

print("Hello World")
Copy to Clipboard Toggle word wrap

流程

  1. 字节编译 pello.py 文件:

    $ python -m compileall pello.py
    Copy to Clipboard Toggle word wrap
  2. 验证是否已创建了文件的字节编译版本:

    $ ls __pycache__
    pello.cpython-311.pyc
    Copy to Clipboard Toggle word wrap

    请注意,输出中的软件包版本可能会因安装的 Python 版本而有所不同。

  3. pello.py 中运行程序:

    $ python pello.py
    Hello World
    Copy to Clipboard Toggle word wrap

2.3.2.2. 原始解析一个 Bash 程序示例

使用 Bash shell 内置语言(bello)编写的 Hello World 程序示例如下:

#!/bin/bash

printf "Hello World\n"
Copy to Clipboard Toggle word wrap
注意

bello 文件顶部的 shebang (#!)符号不是编程语言源代码的一部分。

使用 shebang 将文本文件转换为可执行文件。系统程序加载程序解析包含 shebang 的行,以获取二进制可执行文件的路径,其然后用作编程语言解释器。

流程

  1. 使源代码文件可执行:

    $ chmod +x bello
    Copy to Clipboard Toggle word wrap
  2. 运行创建的文件:

    $ ./bello
    Hello World
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat