Linux下二进制包和源代码包的对比分析
上安装程序通常与在Windows上传统的安装软件方式有所不同。你可以使用预构建的软件包,或者自己编译程序。如今,预构建软件包通常是默认的选择,但在某些情况下,你可能想考虑从源代码进行编译。
在Linux上安装程序通常与在Windows上传统的安装软件方式有所不同。而不是从供应商的网站上下载安装程序,文件来自于一个程序仓库,通常根据你的Linux发行版进行定制。你可以使用Linux软件包管理器或应用商店访问这个仓库。
这些仓库中的程序由多个文件组成,并以一个归档格式进行打包,以便于访问和分发。例如,Debian使用DEB格式存储和分发程序。这些打包文件被称为二进制包。
你需要一个特殊的程序来提取这些文件并将其安装到计算机上,通常是你的软件包管理器或应用商店。这些工具还具有其他有用的功能,例如跟踪已安装的文件和管理软件更新。
较新的软件包格式,如Flatpak和Snap,适用于不同版本的Linux,但它们仍然由预编译的二进制程序组成。两者都需要图形化的应用商店或基于命令行的软件包管理器进行安装。
所有软件都由称为源代码的文本行组成,用特定的编程语言编写,例如C或C++。通常情况下,你不能只将这些源代码打包成一个存档文件并称之为软件包。这些行需要被转换为计算机可以理解和执行的语言。
这个过程被称为编译,最终的结果是创建出计算机可以运行的二进制文件。软件包和软件的区别在于,软件的二进制文件与其他文件(如配置文件)一起存储在一个包中。
从源代码安装程序意味着不使用软件包管理器进行安装。你需要编译源代码,并将二进制文件复制到计算机上。
大多数情况下,你可以从诸如GitHub、GitLab或Bitbucket等托管服务上下载项目的源代码。较大的程序甚至可能在个人网站上托管源代码。该代码通常以一个归档格式(也称为源代码包)进行压缩。
一组特殊的工具帮助自动化构建过程。在Linux桌面上,通常以一个名为make的命令行程序的形式存在。用不同语言编写的源代码需要特定的编译器和命令将其转换为二进制文件。make程序自动化了这个过程。
为了使这个自动化工作起来,程序提供了一个名为Makefile的文件,告诉make应该做什么和如何编译。如今,Makefile通常由特殊的软件(如CMake)自动生成。这就是你需要介入的地方。从这里开始,你可以指定想要编译到软件中的具体功能。
例如,下面的命令使用CMake为Calligra办公套件生成一个配置文件。创建的文件告诉make程序只编译Calligra的Writer组件。
完成这一步骤后,用户只需运行make工具来编译并将结果复制到他们的计算机上。操作步骤如下:
虽然这是编译程序的一般模式,但还有许多其他安装源代码包的方法。例如,Gentoo Linux内置了一种处理源代码包的方法,使得该过程更快捷、更简便。但是构建二进制包需要比上述命令更多的步骤。
如果你使用Linux,很可能有人预编译了你已安装的软件。这比使用源代码包更为常见。但是为什么会这样呢?
二进制包不仅包含已编译的安装文件,还存储了其他信息,使得你的包管理器能够轻松跟踪所有程序。例如,DEB文件(Debian及其衍生版的包格式)还包含重要信息,如程序运行所需的其他软件以及当前版本。
这使得安装包变得更加简单,因为你不需要担心需要哪些其他文件才能成功运行程序。你的包管理器可以从包本身读取这些信息,并自动下载所有必要的依赖项。
而当从源代码安装程序时,除非将代码编译为独立的二进制包,否则你将需要负责管理该软件。你需要记住你需要哪些其他程序来使其工作,并自行安装它们。
负责维护包管理器仓库的人员往往会对二进制文件进行测试,并尽力修复出现的问题。这可能导致提高稳定性,因为包维护人员可能会发现安装源代码的人可能忽视的问题。
此外,包通常必须遵守一套严格的规则,以确保它们能在你的系统上运行。例如,Debian和Ubuntu都有一个政策手册,许多其他Linux发行版也有类似的手册。
有些程序还依赖于不同版本的同一软件依赖项来运行。软件包仓库会尽力解决这些冲突,以免给你带来麻烦。
从源代码安装程序并不是每个人都需要做的事情,因为如果坚持使用二进制包,通常更容易维护你的计算机。尽管如此,使用这种稍微复杂一些的方式安装程序仍然有一些优势。
使程序更加可靠的一个缺点是需要时间来改进和修复。有时候可能有可用的二进制文件,但源代码会稍后提供。对于希望拥有最新和最好的软件的人来说,他们可能愿意在交换较新软件的同时稍微牺牲一些稳定性。
球速体育welcome
虽然有一些Linux操作系统可以满足这种需求而无需编译程序,但它们也有一些缺点。例如,那些不经常发布固定软件包版本的软件在存储库中难以保持最新。相比之下,从源代码安装则不受这些限制。
这是因为二进制包通常是根据官方发布的程序版本制作的。因此,这些版本之间的更改通常不会被考虑在内。通过从源代码编译自己的软件,你可以立即从这些更改中受益。
也有可能你的Linux操作系统没有预先为你准备好你想要的软件。过去,这将使得从源代码安装是唯一的选择。通用的软件包格式已经改变了这一点。Flatpak和Snap软件包通常也比系统存储库更快地接收更新。但仍然有时候编译是获得所需软件的唯一途径。
FFmpeg的功能 使用源代码包的另一个好处是你可以更加掌控你安装的程序。当从二进制软件库安装时,你在自定义软件包方面受到限制。
以FFmpeg为例,它是一个基于命令行的音视频转换工具。默认情况下,它带有大量的功能,其中一些你可能从未使用过。例如,FFmpeg支持JACK音频,尽管这个软件通常只在生产环境中使用。
通过编译FFmpeg,你可以移除你不需要的功能,使其更加轻巧并符合你的需求。同样的原理也适用于其他庞大的程序。
当资源有限时,移除功能可以有效减轻负荷。难怪许多低端计算机上都使用基于Gentoo Linux的ChromeOS。Gentoo是基于源代码的,它编译了许多软件,潜在地使这些系统运行得更加轻巧。
虽然你可能不会每天都想编译软件包,但这是一种有用的方法。尽管如此,随着从Snap Store和Flathub等网站提供的新的通用软件包格式,你更不太可能需要从源代码构建以获得最新的软件。
最近很多小伙伴找我要一些程序员必备资料,于是我翻出了压箱底的宝藏,免费分享给大家!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。举报投诉
编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号,要经过一次码变换,变成自然
你data是非unsigned char。你里面的数据就会转换错乱,导致
文件或以某种方式部分执行,我找不到更多详细信息。因此,我会问是否启用了加密,
格式的文件)除了nasm可以汇编,使用gas也可以的(base) []$ cat test3.asm.global
不可选,是不是需要数据转换???请各位大神不吝赐教,谢谢!!!!!!!
码数字系统中的信息可分为两类,一类是数值,另一类是文字符号(包括控制符)。
你好呀。我在 LPC54S018 开发套件上使用 W25Q128JVFM FLM 文件时遇到问题 。有没有办法获取该
, 然后调用它 。 BSP版本:M451系列BSP V3.01.001 硬件: 任何 M451 系列板块
文件大小会导致此错误,因为闪存中有足够的可用空间?我可以忽略这个错误,但是在用生成的
文件,但是不知道是存储的速率不够还是其他什么原因,存储后我再读取只有5000个点。程序如图所示。请高人指点啊,我不知道
文件中,但是最后我发现保存下来的数只是最后一秒的,就好像每次保存都是替换文件所有内容,如何修改成不替换呢?`
的形式传给visa,并且visa向u***发送的形式也是0101 0101 1111 0000
转BCD本文由杭电网友曾凯峰贡献,特此感谢我们的数据在运算或者存储的时候,一般都是以
3,3减去2(21)得到1,1减去1(20)得到0。由于在本次计算中得到2的最高幂次为7,因此可以得知对应的
安装TensorFlow Python API 依赖 Python 2.7 版本.在
最简单的安装方式, 是使用 pip 安装.如果在安装过程中遇到错误, 请查阅
, 然后调用它 。 BSP版本:M451系列BSP V3.01.001 硬件: 任何 M451 系列板块
信号量 0和1.看来书写的是空的时候为0.满的时候为1,但是如何去判断0和1。
数,并让8个LED显示数字(如果位为0,则指示灯熄灭,当位为1时指示灯亮)。这样做的最佳方法是什么?
补码的形式发送就可以大大减少字节数,即100=“01100100,即只需要1个字节。请问是否可以将数据已
镜像。在前面入门视频“01-烧写、编译以及基础知识视频”→“实验 10-搭建
嗨,我是C编程新手,我正在尝试做一个小项目来启动自己。我正在研究的项目是一个报警系统。对于我的电子学课程不久前,我做了一个数字时钟计数
的加法:0+0=0,0+1=1 ,1+0=1, 1+1=10(向高位进位);
的减法:0-0=0,10-1=1(向高位借位) 1-0=1,1-1=0 (模
文件在 4N22D 中不起作用,我不知道为什么。它与传递给编译器的 ABI 有关吗?我如何编译
黑客所需的合适的课程、视角和任务。当某人能称他们自己是一名逆向工程师时,他们晋升了他们自己,使其超出了仅仅的工程级别。一个真正的黑客不仅能写
呢? 要能运行,能停止,不能像IAP要reset。 求大佬们给点思路。。。
码 数字系统中的信息可分为两类,一类是数值,另一类是文字符号(包括控制符)。
文件非常类似于结构体数组,只不过这些结构体被保存在一个磁盘文件而非内存数组中。因为是使用磁盘保存
编码是计算机内使用最多的码制,它只使用两个基本符号0和1,并且通过由这两个符号组成的
数之间可以执行算术运算和逻辑运算,其规则简单,容易实现。(1) 加法运算规则 0 + 0 = 0 例如:
计数器原理是什么? 计数器是数字系统中用得较多的基本逻辑器件。它不仅能记录输入时钟脉冲的个数,还可以实现
数字通信系统中,每个码元或每个符号只能是“1”和“0”两个状态之一。若将每个码元可能取的状态增
数字Ai,Bi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输
是由1和0两个数字组成的,它可以表示两种状态,即开和关。所有输入电脑的任何信息最终都要转化为
重用攻击技术的演变和典型攻击向量,同时,对基于控制流完整性和随机化的防护方法进行了讨论,对工业界最新的
码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的
的起点。我们每天都在与文件打交道,并非所有的文件都是可执行类型,除此之外还有各种各样的文件类型。在你开始之前,你需要了解要
文件、库文件、ASCII 文本文件、视频文件、图片文件、PDF、数据文件等文件吗?
解码器是由单独的逻辑门构成的另一种组合逻辑电路,与编码器完全相反。名称“解码器”是指将编码信息从一种格式转换或解码为另一种格式,因此
SCA(Software Composition Analysis)软件成分
软件包含的一些信息和特征来实现对该软件的识别、管理、追踪的技术。SCA具体的检测原理又是如何实现的,
文件的SCA检测又有哪些相同点和不同点,下面内容就来回答一下上述疑问。
您可能感兴趣的文章
- 10-15龙芯中科获2家机构调研:公司会实际情况结合市场及时调整销售策略比如今年上半年随着芯片销量逐步回暖我们逐步限制整机型解决方案销售这也是上半年解决方案类业务收入下降
- 10-15龙芯中科接待2家机构调研包括富国基金、中信证券
- 10-15龙芯中科:10月10日组织现场参观活动富国基金、中信证券参与
- 10-15Sam Hartman当选Debian社区领导人
- 10-15统信:首个桌面根操作系统深度 deepin V23 即将发布
- 10-01Debian 社区发表悼念声明 缅怀创始人 Ian Murdock
- 10-01什么是Linux操作系统根社区
- 10-01Debian 11 LTS 更新:安全优先的长期支持策略
- 10-01Debian社区将决定是否把Non-Free Firmware存档添加进官方安装包
- 09-19Ubuntu 将在今后的新版本中使用最新版本的Linux内核
阅读排行
- 1龙芯中科获2家机构调研:公司会实际情况结合市场及时调整销售策略比如今年上半年随着芯片销量逐
- 2龙芯中科接待2家机构调研包括富国基金、中信证券
- 3龙芯中科:10月10日组织现场参观活动富国基金、中信证券参与
- 4Sam Hartman当选Debian社区领导人
- 5统信:首个桌面根操作系统深度 deepin V23 即将发布
- 6Debian 社区发表悼念声明 缅怀创始人 Ian Murdock
- 7什么是Linux操作系统根社区
- 8Debian 11 LTS 更新:安全优先的长期支持策略
- 9Debian社区将决定是否把Non-Free Firmware存档添加进官方安装包
- 10Ubuntu 将在今后的新版本中使用最新版本的Linux内核
推荐教程
- 08-04Debian 109发布修正安全性并带来流行软件包的更新
- 06-28Debian将允许安装非自由固件
- 06-26Debian 122 发布稳定稳定 Linux
- 10-15统信:首个桌面根操作系统深度 deepin V23 即将发布
- 08-31国产操作系统二十年“守夜人”
- 06-29树莓派的操作系统
- 09-02统信软件宣布深度 deepin 社区全新规划打造中国主导的桌面系统根社区
- 08-29debian
- 08-07Debian向社区发出邀请 请求测试Debian 10 “Buster”安装镜像
- 08-21Debian 12 发布:Linux 内核升级 61