在 Linux 上从源代码编译和安装软件

举报
Tiamo_T 发表于 2022/06/23 17:11:05 2022/06/23
【摘要】 本文从一个非常高的层次解释了如何从源代码编译和安装软件

虽然yumapt-getrpm对于安装已编译的软件包非常方便,但您仍然可能会遇到一些必须从源代码安装软件的情况。

本文从一个非常高的层次解释了如何从源代码编译和安装软件。

下载源代码包并解压

Linux 上的软件源代码以压缩 tar 文件的形式出现,通常具有 .tar.gz 或 .tar.bz2 扩展名。用于将源代码打包到这些 tar 球中的工具是“tar”(用于将多个文件合并为一个)、“gzip”或 bzip2(用于压缩)。要获取特定软件的源代码压缩包,您需要知道压缩包的 URL。

获得下载链接后,使用“wget”从命令行获取 tarball。

$ wget <link to the tarball>

上面的命令会将 tarball 下载到当前目录。wget 命令非常灵活并且有很多选项。

接下来,您需要解压缩 tarball 才能访问源代码和其他文件。根据扩展名,使用以下命令之一:

$ tar -xvfz <name of tarball with .tar.gz extension>
(or)
$ tar -xvfj <name of tarball with tar.bz2 extension>

阅读安装文档

下载并提取软件源代码后,首先要做的就是阅读文档。这对我们大多数人来说可能听起来很无聊,但这是一个非常重要的步骤,因为彻底执行此步骤将使您免于未来的大多数问题。文档提供了有关软件的信息、自上一版本以来的更改、更多文档的链接、软件作者的信息、编译和安装软件的步骤等。因此我们可以看到文档中存在许多有价值的信息。

整个信息大致分为两个文件:“Readme”和“Install”。虽然“安装”涵盖了编译和安装所需的所有信息,但所有其他信息都包含在“自述文件”文件中。请注意,文件的名称和大小写可能会有所不同。

配置

完成上述步骤后,我们可以假设我们对该软件有足够的理论知识,现在我们可以继续并配置环境以在我们的系统上编译和安装软件。大多数软件包都附带一个可用于配置环境的配置脚本。配置文件的文件名主要是“配置”。该脚本通常接受可用于控制该软件的某些功能的参数。此脚本还确保系统中存在编译所需的所有工具。

要了解特定配置文件提供的选项,请运行以下命令:

$ configure --help

要开始配置构建环境,请执行以下命令:

$ ./configure

上面的命令将检查和/或创建构建环境,如果一切正常,则会生成一个名为“makefile”的文件。文件“makefile”用于软件的编译。

汇编

生成 makefile 后,只需在同一目录中运行以下命令:

$ make

上述命令将编译所有与软件相关的源代码。如果编译遇到问题,则会在控制台上抛出错误。

安装

编译成功后,将创建所有必需的二进制文件。现在是在标准路径中安装这些二进制文件的时候了,以便可以从系统中的任何位置调用它们。为此,请运行以下命令:

$ make install

请注意,有时安装软件可能需要 root 权限,因此可能会获得权限,然后继续执行上述命令。

以上 5 个步骤展示了如何从源代码获取、解包、配置、编译和安装软件。此外,可以通过删除解压缩软件 tarball 时创建的目录来进行一些清理。

从源代码编译和安装开源软件时,可能会出现一些问题/错误。让我们看看这里的一些:

  • 缺少共享库:有时当你运行刚刚安装的程序时,你会得到一个与某些.相关的错误,以至于你的程序无法找到。首先,.so 是我们在 Windows 中拥有的 DLL 的同义词。这些是程序所需的共享库。其次,当您的程序安装在某些非标准路径中或共享库实际上不存在于您的系统中时,这些类型的错误就会爆发。对于第一种情况,您需要告诉 shell 环境这些新共享库的安装路径。这可以通过使用“ldconfig”命令或修改 LD_LIBRARY_PATH 变量来完成。
  • 损坏的源代码:无论您通过阅读所有文档并涵盖构建软件的所有步骤付出了多少痛苦,但是如果源代码出现一些编译错误,那么这在很大程度上意味着该软件已经损坏了源代码。在这种情况下,除了将此问题反馈给该软件的作者外,无能为力。同时,如果您认为可以,您可以调试错误并查看这些是否是可以修复的微不足道的错误(如语法错误)。
  • 没有配置脚本:虽然很少见,但有时您会发现源代码目录中没有配置脚本。如果发生这种情况,并不意味着您被卡住了。在这种情况下,您只需要详细阅读文档,您肯定会在其中找到一些有关编译和安装软件的环境配置的信息。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。