目录
什么是二进制包?" >什么是二进制包?
如何阅读二进制代码" >如何阅读二进制代码
什么是源代码?" >什么是源代码?
什么是“从源代码安装”?" >什么是“从源代码安装”?
从源代码构建的示例" >从源代码构建的示例
使用二进制包的好处" >使用二进制包的好处
编译源代码包的好处" >编译源代码包的好处
为什么不同时使用二进制和源代码包呢?" >为什么不同时使用二进制和源代码包呢?
首页 系统教程 操作系统 Linux 下二进制包 vs 源代码包:你应该选择哪个?

Linux 下二进制包 vs 源代码包:你应该选择哪个?

Feb 14, 2024 pm 07:06 PM
linux linux教程 linux系统 linux操作系统 linux命令 外壳脚本 嵌入式linux linux入门 linux学习

在 Linux 系统中,安装程序通常跟传统的 Windows 安装软件方式有异。你可以采用预构建软件包进行安装,也可以自行编译程序。在那些日益流行的发行版中,预构建软件包通常是主要的解决方案。但有时,你也可能需要从源代码上进行编译。这也是 Linux 操作系统的特点之一。从源代码编译程序可以确保程序能够在系统中正常运行,并且具有更多的灵活性和自定义性。无论你选择哪种方法,都需要根据你的需求,选择最适合你的方式。

什么是二进制包?

Linux 下二进制包 vs 源代码包:你应该选择哪个?

在Linux上安装程序通常与在Windows上传统的安装软件方式有所不同。而不是从供应商的网站上下载安装程序,文件来自于一个程序仓库,通常根据你的Linux发行版进行定制。你可以使用Linux软件包管理器或应用商店访问这个仓库。

这些仓库中的程序由多个文件组成,并以一个归档格式进行打包,以便于访问和分发。例如,Debian使用DEB格式存储和分发程序。这些打包文件被称为二进制包。

如何阅读二进制代码

你需要一个特殊的程序来提取这些文件并将其安装到计算机上,通常是你的软件包管理器或应用商店。这些工具还具有其他有用的功能,例如跟踪已安装的文件和管理软件更新。

较新的软件包格式,如Flatpak和Snap,适用于不同版本的Linux,但它们仍然由预编译的二进制程序组成。两者都需要图形化的应用商店或基于命令行的软件包管理器进行安装。

什么是源代码?

所有软件都由称为源代码的文本行组成,用特定的编程语言编写,例如C或C++。通常情况下,你不能只将这些源代码打包成一个存档文件并称之为软件包。这些行需要被转换为计算机可以理解和执行的语言。

这个过程被称为编译,最终的结果是创建出计算机可以运行的二进制文件。软件包和软件的区别在于,软件的二进制文件与其他文件(如配置文件)一起存储在一个包中。

什么是“从源代码安装”?

Linux 下二进制包 vs 源代码包:你应该选择哪个?

从源代码安装程序意味着不使用软件包管理器进行安装。你需要编译源代码,并将二进制文件复制到计算机上。

大多数情况下,你可以从诸如GitHub、GitLab或Bitbucket等托管服务上下载项目的源代码。较大的程序甚至可能在个人网站上托管源代码。该代码通常以一个归档格式(也称为源代码包)进行压缩。

一组特殊的工具帮助自动化构建过程。在Linux桌面上,通常以一个名为make的命令行程序的形式存在。用不同语言编写的源代码需要特定的编译器和命令将其转换为二进制文件。make程序自动化了这个过程。

为了使这个自动化工作起来,程序提供了一个名为Makefile的文件,告诉make应该做什么和如何编译。如今,Makefile通常由特殊的软件(如CMake)自动生成。这就是你需要介入的地方。从这里开始,你可以指定想要编译到软件中的具体功能。

从源代码构建的示例

例如,下面的命令使用CMake为Calligra办公套件生成一个配置文件。创建的文件告诉make程序只编译Calligra的Writer组件。

cmake -DPRODUCTSET=WORDS -DCMAKE_INSTALL_PREFIX=$HOME/kde/inst5 $HOME/kde/src/calligra
登录后复制

完成这一步骤后,用户只需运行make工具来编译并将结果复制到他们的计算机上。操作步骤如下:

make
make install
登录后复制
Linux 下二进制包 vs 源代码包:你应该选择哪个?

虽然这是编译程序的一般模式,但还有许多其他安装源代码包的方法。例如,Gentoo Linux内置了一种处理源代码包的方法,使得该过程更快捷、更简便。但是构建二进制包需要比上述命令更多的步骤。

使用二进制包的好处

如果你使用Linux,很可能有人预编译了你已安装的软件。这比使用源代码包更为常见。但是为什么会这样呢?

1、二进制版本更易管理

Linux 下二进制包 vs 源代码包:你应该选择哪个?

二进制包不仅包含已编译的安装文件,还存储了其他信息,使得你的包管理器能够轻松跟踪所有程序。例如,DEB文件(Debian及其衍生版的包格式)还包含重要信息,如程序运行所需的其他软件以及当前版本。

这使得安装包变得更加简单,因为你不需要担心需要哪些其他文件才能成功运行程序。你的包管理器可以从包本身读取这些信息,并自动下载所有必要的依赖项。

而当从源代码安装程序时,除非将代码编译为独立的二进制包,否则你将需要负责管理该软件。你需要记住你需要哪些其他程序来使其工作,并自行安装它们。

2、二进制版本具有更好的稳定性

负责维护包管理器仓库的人员往往会对二进制文件进行测试,并尽力修复出现的问题。这可能导致提高稳定性,因为包维护人员可能会发现安装源代码的人可能忽视的问题。

此外,包通常必须遵守一套严格的规则,以确保它们能在你的系统上运行。例如,Debian和Ubuntu都有一个政策手册,许多其他Linux发行版也有类似的手册。

有些程序还依赖于不同版本的同一软件依赖项来运行。软件包仓库会尽力解决这些冲突,以免给你带来麻烦。

编译源代码包的好处

从源代码安装程序并不是每个人都需要做的事情,因为如果坚持使用二进制包,通常更容易维护你的计算机。尽管如此,使用这种稍微复杂一些的方式安装程序仍然有一些优势。

1、源代码提供最新软件

使程序更加可靠的一个缺点是需要时间来改进和修复。有时候可能有可用的二进制文件,但源代码会稍后提供。对于希望拥有最新和最好的软件的人来说,他们可能愿意在交换较新软件的同时稍微牺牲一些稳定性。

虽然有一些Linux操作系统可以满足这种需求而无需编译程序,但它们也有一些缺点。例如,那些不经常发布固定软件包版本的软件在存储库中难以保持最新。相比之下,从源代码安装则不受这些限制。

这是因为二进制包通常是根据官方发布的程序版本制作的。因此,这些版本之间的更改通常不会被考虑在内。通过从源代码编译自己的软件,你可以立即从这些更改中受益。

也有可能你的Linux操作系统没有预先为你准备好你想要的软件。过去,这将使得从源代码安装是唯一的选择。通用的软件包格式已经改变了这一点。Flatpak和Snap软件包通常也比系统存储库更快地接收更新。但仍然有时候编译是获得所需软件的唯一途径。

2、你可以自己选择功能

Linux 下二进制包 vs 源代码包:你应该选择哪个?

FFmpeg的功能 使用源代码包的另一个好处是你可以更加掌控你安装的程序。当从二进制软件库安装时,你在自定义软件包方面受到限制。

以FFmpeg为例,它是一个基于命令行的音视频转换工具。默认情况下,它带有大量的功能,其中一些你可能从未使用过。例如,FFmpeg支持JACK音频,尽管这个软件通常只在生产环境中使用。

通过编译FFmpeg,你可以移除你不需要的功能,使其更加轻巧并符合你的需求。同样的原理也适用于其他庞大的程序。

当资源有限时,移除功能可以有效减轻负荷。难怪许多低端计算机上都使用基于Gentoo Linux的ChromeOS。Gentoo是基于源代码的,它编译了许多软件,潜在地使这些系统运行得更加轻巧。

为什么不同时使用二进制和源代码包呢?

虽然你可能不会每天都想编译软件包,但这是一种有用的方法。尽管如此,随着从Snap Store和Flathub等网站提供的新的通用软件包格式,你更不太可能需要从源代码构建以获得最新的软件。

以上是Linux 下二进制包 vs 源代码包:你应该选择哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

vscode需要什么电脑配置 vscode需要什么电脑配置 Apr 15, 2025 pm 09:48 PM

VS Code 系统要求:操作系统:Windows 10 及以上、macOS 10.12 及以上、Linux 发行版处理器:最低 1.6 GHz,推荐 2.0 GHz 及以上内存:最低 512 MB,推荐 4 GB 及以上存储空间:最低 250 MB,推荐 1 GB 及以上其他要求:稳定网络连接,Xorg/Wayland(Linux)

vscode 无法安装扩展 vscode 无法安装扩展 Apr 15, 2025 pm 07:18 PM

VS Code扩展安装失败的原因可能包括:网络不稳定、权限不足、系统兼容性问题、VS Code版本过旧、杀毒软件或防火墙干扰。通过检查网络连接、权限、日志文件、更新VS Code、禁用安全软件以及重启VS Code或计算机,可以逐步排查和解决问题。

notepad怎么运行java代码 notepad怎么运行java代码 Apr 16, 2025 pm 07:39 PM

虽然 Notepad 无法直接运行 Java 代码,但可以通过借助其他工具实现:使用命令行编译器 (javac) 编译代码,生成字节码文件 (filename.class)。使用 Java 解释器 (java) 解释字节码,执行代码并输出结果。

vscode是什么 vscode是干什么用的 vscode是什么 vscode是干什么用的 Apr 15, 2025 pm 06:45 PM

VS Code 全称 Visual Studio Code,是一个由微软开发的免费开源跨平台代码编辑器和开发环境。它支持广泛的编程语言,提供语法高亮、代码自动补全、代码片段和智能提示等功能以提高开发效率。通过丰富的扩展生态系统,用户可以针对特定需求和语言添加扩展程序,例如调试器、代码格式化工具和 Git 集成。VS Code 还包含直观的调试器,有助于快速查找和解决代码中的 bug。

vscode 可以用于 mac 吗 vscode 可以用于 mac 吗 Apr 15, 2025 pm 07:36 PM

VS Code 可以在 Mac 上使用。它具有强大的扩展功能、Git 集成、终端和调试器,同时还提供了丰富的设置选项。但是,对于特别大型项目或专业性较强的开发,VS Code 可能会有性能或功能限制。

VSCode怎么用 VSCode怎么用 Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCode) 是一款跨平台、开源且免费的代码编辑器,由微软开发。它以轻量、可扩展性和对众多编程语言的支持而著称。要安装 VSCode,请访问官方网站下载并运行安装程序。使用 VSCode 时,可以创建新项目、编辑代码、调试代码、导航项目、扩展 VSCode 和管理设置。VSCode 适用于 Windows、macOS 和 Linux,支持多种编程语言,并通过 Marketplace 提供各种扩展。它的优势包括轻量、可扩展性、广泛的语言支持、丰富的功能和版

Linux的主要目的是什么? Linux的主要目的是什么? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服务器操作系统,2.嵌入式系统,3.桌面操作系统,4.开发和测试环境。Linux在这些领域表现出色,提供了稳定性、安全性和高效的开发工具。

git怎么查看仓库地址 git怎么查看仓库地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 仓库地址,请执行以下步骤:1. 打开命令行并导航到仓库目录;2. 运行 "git remote -v" 命令;3. 查看输出中的仓库名称及其相应的地址。

See all articles