在 Linux 上编译:创建二进制文件的 3 个步骤🔥
关键摘要
- 大多数软件从源代码编译都遵循三个步骤:
./配置 && 制作 && 进行安装
. - 脚本 配置 检查依赖关系, 制作 生成可执行文件,以及诸如 autoconf/automake 使这一过程自动化。
- 安装通常是可选的,这样可以更轻松地运行复制到目录中的命令
小路
的系统。
与使用包管理器相比,从源代码进行编译似乎很困难,但通过三个基本命令,该过程变得简单明了。🚀
什么是从源代码编译?
您使用的程序可以是解释型的,也可以是编译型的。解释型程序是包含代码的文本文件,由另一个程序(解释器)实时执行。而编译型程序是包含可执行机器码的二进制文件。
编译后的可执行文件非常常见,尤其是在大型程序中。从源代码编译时,像 sas 这样的编译器 海湾合作委员会
将代码转换为可执行程序,通常分布在多个文件中。

编译过程可能非常广泛且复杂,这就是为什么它通常使用以下程序自动完成,例如 制作
. 文件 生成文件 控制最终可执行文件的构建方式。
在大型项目中,这些 生成文件 它们可能非常复杂,以至于可以使用以下工具自动生成: 自动配置 和 自动制作 以确保跨不同架构的兼容性。🛠️
3步构建过程:配置、制作、安装
大多数软件使用这种基本模式从源代码进行编译:
./配置 && 制作 && 进行安装
Apache 等流行程序使用此序列(或某些变体),例如 解释他的档案 安装:

Node.js 也遵循这种结构,如其 BUILDING.md 文件所示:

每个项目可能与此命令字符串略有不同。使用逻辑 AND 运算符 (&&
) 如果任何步骤失败,则停止该过程:
./配置 && 制作 && 进行安装
或者,您可以在一行上用分号分别运行每个命令,尽管这样会运行所有命令,并且如果有任何命令失败,它也不会停止:
./配置;制作;进行安装
您也可以分别执行这三行:
./配置 制作 制作安装
如果您只想尝试该程序而不安装它,您可以跳过 进行安装
并从其文件夹运行它。
配置
Ready,而其他一些脚本(例如 grep)则需要先运行另一个脚本来生成它。请务必参考 INSTALL、BUILD 或 README 文件,以遵循项目的建议。📋./configure 如何启动进程
脚本 配置
它是编译过程的起点,使项目适应您的环境。
此脚本检查项目所需的依赖项,包括版本和可用性。完成后,它会生成一个名为 生成文件
为下一阶段做好准备。
脚本 配置
提供许多可配置选项 ./configure--帮助
,允许您自定义构建细节。
配置
作为 制作
在屏幕上生成大量输出。使用选项 - 安静的
如果你想运行这些命令而不显示太多细节。🤫如果脚本缺失 配置
,一些项目包含类似脚本 autogen.sh
来生成它。例如,htop 使用它:

非常简单的项目或者用其他语言编写的项目可能没有 配置
。该过程分为两个步骤: 制作 && 制作安装
.
脚本 配置
它还控制安装细节,例如参数 --前缀
,设置安装根目录。默认情况下是 /usr/本地
,但您可以更改它以更好地组织您的文件。
make 完成大部分工作
后 配置
生成 生成文件
,软件的实际编译开始于 制作
.
该程序读取 生成文件
并遵循规则来决定创建或更新哪些文件。 Makefile
对于了解语法的人来说,手写的内容很容易理解。
例如,这个 生成文件
简单编译一个依赖于文件的程序 程序.c
:
程序:program.c gcc -o 程序 program.c
制作
检查是否 程序.c
自上次编译以来发生了变化。如果没有变化,则不执行任何操作;如果发生了变化,则使用 海湾合作委员会
.

这 生成文件
自动生成的通常要复杂得多。例如, 生成文件
htop 有 2,440 行:

但你不需要了解每一个细节,除非你修改源代码,直接运行就可以了。 制作
并让系统来处理它。
步骤 制作
对于大型项目,这可能需要几分钟甚至更长时间。如果失败,通常是由于缺少依赖项。优点是 制作
保存进度并在您再次运行时从中断的地方继续。
使用 make install 完成
编译后,创建的可执行文件通常位于项目的根目录或名为 垃圾桶
。您可以使用完整路径运行它:

这对于测试很有用,但从长远来看,您需要将其安装在可访问的位置。
目标 安装
定义了 生成文件
复制必要的文件并设置权限。默认位置是 /usr/local/bin
,尽管你可以用 --前缀
.
如果您没有该文件夹的权限,请运行 sudo make install
并提供管理员密码。
安装目录必须包含在变量中 小路
能够仅使用其名称来运行该程序,而无需指定完整路径。