如何在Ubuntu上从源代码编译和安装

时间:2020-01-09 10:39:00  来源:igfitidea点击:

Ubuntu和其他Linux发行版具有广泛的软件包存储库,可避免我们自己编译任何内容的麻烦。不过,有时我们会发现必须从源代码编译的晦涩的应用程序或者程序的新版本。

我们不必是程序员即可从源代码构建程序并将其安装在系统上;我们只需要了解基本知识。只需几个命令,我们就可以像专业人士一样从源代码进行构建。

安装所需的软件

在Ubuntu软件包存储库中安装build-essential软件包会自动安装我们需要从源代码编译的基本软件,例如GCC编译器和其他实用程序。通过在终端中运行以下命令来安装它:

sudo apt-get install build-essential

键入Y并在出现提示时按Enter确认安装。

获取源码包

现在,我们需要所需的应用程序的源代码。这些软件包通常位于带有.tar.gz或者.tar.bz2文件扩展名的压缩文件中。

举例来说,让我们尝试从源代码编译Pidgin,也许有一个尚未打包的较新版本,我们现在就需要。找到程序的.tar.gz或者.tar.bz2文件并将其保存到计算机。

.tar.gz或者.tar.bz2就像.zip文件。要使用它,必须提取其内容。

使用以下命令提取.tar.gz文件:

tar -xzvf file.tar.gz

或者使用以下命令提取.tar.bz2文件:

tar -xjvf file.tar.bz2

我们最终将得到一个与源代码包同名的目录。使用cd命令输入它。

解决依赖关系

一旦进入解压缩目录,请运行以下命令:

./configure

(请注意,某些应用程序可能不使用./configure。请查看应用程序提取文件夹中的README或者INSTALL文件,以获取更多具体说明。)

(./部分告诉Bash shell在当前目录中查找配置文件并运行它。如果省略了./,则Bash会在/ bin和/ usr / bin等系统目录中查找名为configure的程序。 )

./configure命令检查系统中是否有构建程序所需的必需软件。

除非我们很幸运(或者系统上已经有很多必需的软件包),否则我们将收到错误消息,表明我们需要安装某些软件包。在这里,我们看到一条错误消息,提示系统中存在intltool脚本。我们可以使用以下命令安装它们:

sudo apt-get install intltool

安装所需的软件后,再次运行./configure命令。如果需要安装其他软件,请使用sudo apt-get install命令重复此过程,直到./configure成功完成。并非每个必需的软件包都具有我们在错误消息中看到的确切名称,我们可能需要向Google发送错误消息来确定所需的软件包。

如果我们要编译的较旧版本的程序已经存在于Ubuntus软件存储库中,则可以使用sudo apt-get build-dep命令作弊。例如,如果我运行sudo apt-get build-dep pidgin,则apt-get将自动下载并安装所有需要编译Pidgin的依赖项。如我们所见,我们需要使用的许多软件包都以-dev结尾。

./configure成功完成后,我们就可以编译并安装软件包了。

编译安装

使用以下命令来编译程序:

make

此过程可能需要一些时间,具体取决于系统和程序的大小。如果./configure成功完成,则不应有任何问题。我们会在程序编译时看到文本行滚动。

此命令完成后,程序已成功编译但未安装。使用以下命令将其安装到系统中:

sudo make install

它可能存储在系统上的/ usr / local下。 / usr / local / bin是系统路径的一部分,这意味着我们可以在终端中键入pidgin来启动Pidgin,而不必大惊小怪。

如果要稍后安装该程序,请不要删除该程序的目录,可以从该目录运行以下命令以从系统中卸载该程序:

sudo make uninstall

即使我们安装的程序包含安全漏洞,也不会由Ubuntus Update Manager自动更新。除非我们需要Ubuntus软件存储库中没有的特定应用程序或者版本,否则最好使用发行版官方软件包。