2.3. 从源构建软件
在软件构建过程中,源代码被转换为可以使用 RPM 打包的软件工件。
2.3.1. 从原生编译的代码构建软件 复制链接链接已复制到粘贴板!
您可以使用以下方法之一将使用编译语言编写的软件构建成可执行文件:
- 手动构建
- 自动化构建
2.3.1.1. 手动构建一个 C 程序示例 复制链接链接已复制到粘贴板!
您可以使用手动构建来构建使用编译语言编写的软件。
使用 C 编写的 Hello World
程序示例(cello.c
)包含以下内容:
流程
从 GNU Compiler Collection 调用 C 编译器,将源代码编译到二进制中:
gcc -g -o cello cello.c
$ gcc -g -o cello cello.c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行生成的二进制文件
cello
:./cello
$ ./cello Hello World
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.1.2. 为示例 C 程序设置自动构建 复制链接链接已复制到粘贴板!
大规模软件通常使用自动构建。您可以通过创建 Makefile
文件,然后运行 GNU make
实用程序来设置自动构建。
流程
在与
cello.c
相同的目录中,创建包含以下内容的Makefile
文件:cello: gcc -g -o cello cello.c clean: rm cello
cello: gcc -g -o cello cello.c clean: rm cello
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,
cello:
和clean:
下的行必须以制表符(tab)开头。构建软件:
make
$ make make: 'cello' is up to date.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 因为构建已在当前目录中可用,所以请输入
make clean
命令,然后再次输入make
命令:make clean make
$ make clean rm cello $ make gcc -g -o cello cello.c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,此时尝试再次构建程序无效,因为 GNU
make
系统检测到现有的二进制文件:make
$ make make: 'cello' is up to date.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行程序:
./cello
$ ./cello Hello World
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.2. 解释源代码 复制链接链接已复制到粘贴板!
您可以使用以下方法之一将解释编程语言编写的源代码转换为机器码:
字节编译
字节软件的流程因以下因素而异:
- 编程语言
- 语言虚拟机
与该语言一起使用的工具和流程
注意您可以字节编译的软件,例如在 Python 中。用于分发的 Python 软件通常是字节编译的,但这不是以本文档中介绍的方法。上述流程目的不是为了符合社区标准,而是为了简单。有关实际工作环境中的 Python 指南,请参阅打包和发布。
您还可以原始解释 Python 源代码。但是,字节编译的版本速度更快。因此,RPM 软件包程序更喜欢将字节编译的版本打包,来分发给最终用户。
原始解释
使用 shell 脚本语言(如 Bash)编写的软件始终由原始解释执行。
2.3.2.1. 字节编译一个 Python 程序示例 复制链接链接已复制到粘贴板!
通过对 Python 源代码选择字节编译而不是原始解释,您可以创建更快的软件。
使用 Python 编程语言(pello.py
)编写的 Hello World
程序示例具有以下内容:
print("Hello World")
print("Hello World")
流程
字节编译
pello.py
文件:python -m compileall pello.py
$ python -m compileall pello.py
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否已创建了文件的字节编译版本:
ls __pycache__
$ ls __pycache__ pello.cpython-311.pyc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,输出中的软件包版本可能会因安装的 Python 版本而有所不同。
在
pello.py
中运行程序:python pello.py
$ python pello.py Hello World
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.2.2. 原始解析一个 Bash 程序示例 复制链接链接已复制到粘贴板!
使用 Bash shell 内置语言(bello
)编写的 Hello World
程序示例如下:
#!/bin/bash printf "Hello World\n"
#!/bin/bash
printf "Hello World\n"
bello
文件顶部的 shebang (#!
)符号不是编程语言源代码的一部分。
使用 shebang 将文本文件转换为可执行文件。系统程序加载程序解析包含 shebang 的行,以获取二进制可执行文件的路径,其然后用作编程语言解释器。
流程
使源代码文件可执行:
chmod +x bello
$ chmod +x bello
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行创建的文件:
./bello
$ ./bello Hello World
Copy to Clipboard Copied! Toggle word wrap Toggle overflow