我目前正在使用 Linux From Scratch。我下载了一些软件包。我使用“tar”命令解压缩它们,并在解压的软件包中执行以下操作:
- 配置
- 制作
- 进行测试
- 进行安装
还有一件事,什么是 makefile?
请向我解释这些命令的用途,特别是就 LFS 而言。提前感谢。
答案1
我(有点)知道它的作用,但我不确定我是否知道如何解释。
基本上,通过您提到的命令序列,您可以用源代码(即用编程语言编写的代码)创建二进制可执行形式(程序、库)的东西,并将其安装在您的操作系统中(将其移动到适当的文件夹,设置配置文件等)。
makefile 是 make 命令使用的文本文件。它有助于(自动)执行任务。单个 makefile 可能包含 make 要执行的多个任务或操作的信息。如果没有 makefile,您将不得不执行许多复杂的手动步骤才能完成任务。
“配置”:(解释取自这里) 检查将要安装软件的机器的一些详细信息。此脚本检查系统中是否存在大量依赖项。为了使特定软件正常工作,可能需要您的机器上已经存在很多东西。如果您的系统缺少任何主要要求,则 configure 脚本将退出,并且您无法继续安装,直到您获得那些必需的东西。否则,它会创建 Makefile 以供下一步使用。
不带参数的“make”:指示 make 执行 makefile 中的默认操作(规则)。这通常会编译、链接并生成您要创建的二进制文件(即程序或库)。这通常涉及将源代码转换为目标文件(通常具有扩展名.o
)并将它们链接到最终的二进制文件(对于 Linux 程序,通常没有扩展名;对于 Linux 库,通常具有.so
或.a
扩展名)。我不确定这些步骤,因为我是一名 Java 程序员,我们不经常执行这些步骤)。
“make test”:对该二进制文件执行测试。
“make install”:基本上将二进制文件移动到正确的文件夹位置。
这个解释当然还可以有很多改进,我只是想让你了解整个过程。
这个简短的教程可能会提供更多信息。
答案2
使用 aMakefile
可以让开发人员和最终用户的工作更加轻松。基本上,它是一份关于如何构建特定软件的备忘单。对于简单的“Hello world”,ag++ hw.cpp -o hello_world
就可以工作。但是,当您拥有更复杂的软件时,通常必须在构建 A 部分之前构建 B 部分,一旦完成这两个部分,就可以构建 C 部分。手动输入这些内容 - 以及插入包含库的路径、临时输出文件、最终安装路径等(通常在configure
运行脚本时确定) - 可能会导致错误。