Gentoo:我为什么选择编译自己的程序?

好吧,鉴于我之前的文章获得了好评,我来告诉您更多有关我最喜欢的发行版Gentoo Linux的信息。 我保证这篇文章将提供有趣的信息,可以帮助您了解一些关于可怕事物的神话。 合编 软件。 我还承诺,这些信息将在大约20个步骤后对下一个Gentoo Linux安装指南有用(我对它们的了解还不够,但是我认为它们甚至更少)。 事不宜迟,让我们开始:

编译什么?

它是由程序(通常称为编译器)执行的过程,将以人类语言编写的代码(C,C ++文件等)转换为机器可以理解的代码(二进制代码)。 让我们看下面的例子:

自己的设计,克里斯托弗·迪亚斯·里维罗斯(ChristopherDíazRiveros)

这是我们的小C程序(如果以后需要其他C教程,我也很乐意向您展示这段时间我学到了多少东西)。 现在让我们看一下编译后的输出。

自己的设计,ChrirstopherDíazRiveros

美丽,不是吗? is这就是我们的机器理解为,每次执行程序时,便可以在我们的终端中写入很少的“ Hello”。

构建过程:

由于没有.c和.h文件在项目中很丰富(就像所有编程语言一样),所以没有一个程序可以在屏幕上打印一个简单的“ Hello”。 为了简化编译过程,出现了新工具,其中最有代表性的是命令 使.

Make 取一个文件 Makefile 作为起点并编译创建最终可执行文件所需的内容,在某些情况下,此步骤需要执行一个名为 configure 以便能够分配一些必要的变量,以供编译器编译(避免冗余)有用的文件。

这就是为什么在许多教程中我们会发现以下步骤的原因:

拥有。 克里斯托弗·迪亚兹·里维罗斯(Christopher Diaz Riveros)

./configure的魔力:

为了向您展示源代码中最隐藏和最有趣的秘密之一,我们将转到一个众所周知的程序的源代码, 须藤。 首先是通常的步骤,但我会停在 /配置  给他们看一些特别的东西

拥有。 克里斯托弗·迪亚兹·里维罗斯(Christopher Diaz Riveros)

这将返回一长串选项,其中我将向您展示最吸引我注意的选项。

拥有。 克里斯托弗·迪亚兹·里维罗斯(Christopher Diaz Riveros)

--with-insults...顾名思义,使用以下命令编译sudo 侮辱 😀是一项有趣的功能,可让您在用户每次输入密码错误时向其发送侮辱。 这是为了什么好吧,不久前😛,但这很明确。 大多数发行版中默认没有成千上万的选项。

就像您一样,还有许多其他人可能会在二进制代码发行版中处于活动状态,并且您永远不会使用它们,或者您将需要一些,但是它们不会随您的官方发行的二进制文件一起提供,这意味着每次更新都是手动的。

在Gentoo上获得乐趣:

我们已经看到了预编译程序可能缺少或拖延了多少个选项。 但是,现在让我们稍微关注一下预编译的问题。

性能:

您是否曾经想过,为什么新机器看上去比不那么现代的机器快一些? 如果处理器更好,则有更多的RAM,一切都更好,为什么不走得更快? 答案很简单... 汇编。

让我们举一个非常实际的例子。

我的程序使用选项编译 --march=broadwell... 这是因为我的处理器是Broadwell(Intel i7)。 不利的一面呢? Broadwell之前的任何处理器都无法识别此二进制文件. 在这一点上,如果我使用 -游行  具体来说,上述所有方法均无效...那么二进制程序包如何支持这么多类型的硬件? 很容易,它们使用最少的选项进行编译🙂这保证了所有类型的硬件都能够读取它(至少出于兼容性考虑)。

真正的问题...如果您使用为i3编译的程序... i7(或其相应的AMD类比)的所有功能都被浪费了! 不难过吗🙁

灵活性:

由于Gentoo开发人员非常聪明,因此tar,。/ configure,make等整个过程已被替换为 波蒂奇。 所有这些奇怪的配置都已重命名为USE标志,因此,如果需要特定的配置,则无需输入源代码,只需配置变量即可。 这是在portage中如何使用sudo的示例。 首先,我们将了解当前配置中的哪些选项 查询.

拥有。 克里斯托弗·迪亚兹·里维罗斯(Christopher Diaz Riveros)

如我们所见,红色选项被激活,蓝色选项没有被激活...每个人都可以阅读图例🙂

假设我要添加一个选项...

拥有。 克里斯托弗·迪亚兹·里维罗斯(Christopher Diaz Riveros)

就像在文件中添加一行一样简单 须藤 (名称是参考) /etc/portage/package.use/. 有了这个,下一次我们安装sudo时,它将告诉我们将在激活选项的情况下重新编译它。

拥有。 克里斯托弗·迪亚兹·里维罗斯(Christopher Diaz Riveros)

如果我们给 可以,您所要做的就是稍等片刻,如此简单。

最后的想法:

好了,我们已经知道在Gentoo中处理额外功能是多么容易,这使我们能够在喜欢的程序中添加,删除或修改选项。 我们还看到了程序的性能如何在很大程度上取决于我们用来编译程序的变量。 如果您有一台非常新的机器,那么Gentoo是您的最佳选择。 如果您有一台非常老的机器,那么Gentoo也是您的选择(尽管编译需要一些时间,但最终程序会更轻巧)。

我将很快为SystemD爱好者和OpenRC冒险者(我在GNOME中使用systemd)编写我的Gentoo安装指南。 顺便说一句,Gentoo的另一个巨大优势是能够 选择 系统内部的一切,当我说一切 ALL.

如果您错过了我的第一篇文章,请访问以下链接:

Gentoo Linux:旅程的故事

问候,


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   市场

    大! 我将等待带有Gnome的Gentoo安装指南。 即使我仍然有一台稍旧的PC(Intel Core i5 3rd gen。),也可能鼓励我迁移到Gentoo。 干杯!

    1.    克里斯达德

      不久,玛特·甘诺(Martganó)赢得了我分享更多东西的机会,所以我写了另一篇文章等待出版,但不久之后,我promise

  2.   峡湾

    我想我会在这里开始看到很多关于我最喜欢的linux发行版的帖子 o!!
    自2005年以来我一直在Gentoo,在那里我用它在我学习的大学(以及现在工作的大学)中建立了一个邮件服务器,尽管我遭受了零星的分散攻击,但我最终还是带着亲爱的Gertroodis回来(首先是Gnome2,然后是Xfce,现在是openbox) ,并且您在上一篇文章中发表评论时,会通过不断增强的技能和知识对其进行微调
    我将等待您的下一次捐助,问候和感谢,感谢您度过了美好的一天!

    1.    克里斯达德

      好吧,下一个即将问世🙂就像是关于我最喜欢的话题的有趣对话,下一个即将到来,下一个以及下一个😛问候,非常感谢您的评论🙂

  3.   胜利者

    我已经在发行版之间跳了多年了,一直在考虑编译我的……。 该指南将成为我所缺少的步骤...。 而我要用手册取悦自己。 谢谢你的一切……

    1.    克里斯达德

      好吧,手册是信息的天堂,一无所有-我只能贡献我的一小块沙子-但很快,下一篇文章即将出版,而不久之后将发布(我已经看到这是很期待的) 〜20个步骤的安装指南。 干杯,

      1.    胜利者

        从头开始,您没有给我多长时间谈论不同的微处理器,指南就在这里! 我的这头迷糊了第一! !!! 数百万的感谢!!!

  4.   豆浆的

    Knoppix,Mandrake,Ubuntu和Debian ...并一直在思考Gentoo ...

    等待那20个步骤!

    1.    克里斯达德

      哈哈哈好吧,就像是在做梦吗? say我说是时候实现了s问候

  5.   酷如冰

    您好ChrisADR,您好,首先我想告诉您,自您关于Gentoo的第一篇文章以来,我的睡眠一直不好,并且与这篇新文章有关,我的梦想是基于在旧Aspire One上网本上编译Gentoo的。 在我的梦里,系统告诉我我的上网本很旧,因此无法识别硬件。
    另一方面,一旦我看到Gentoo并引起了我的注意,他们就提到了它为计算机(计算机)提供的功能。 从那天起我告诉自己,有一天我会安装它,已经超过10年了,但我还没有完成它,也许是因为他们告诉我安装它非常困难,当时我几乎是反Linux的,所以他们增加了对此的不满。 但是好奇心仍在继续。 有一次我试图在上网本上安装BSD并没有成功,却被告知Gentoo是一个非常类似于BSD的linux。
    您建议如何使用旧的Atom编译器在旧的Aspire One上安装Gentoo?

    非常感谢您的文章,我一直在等待更多

    1.    克里斯·阿德

      好吧,我建议你…做吧! 最后,如果最后它失败了(我非常怀疑,因为内核是为支持各种硬件而设计的),那么您将在Linux世界中拥有极为丰富的经验🙂您将编译内核,您将从头开始安装文件系统,您将做出很少使用的配置🙂它将为您提供一个新的世界观哈哈哈。我在这里留下我个人资料的链接

      https://unix.stackexchange.com/users/246185/christopher-d%C3%ADaz-riveros?tab=profile

      不要害怕,最后,如果一切顺利(肯定会花一点钱),那将是您的书所取得的成就😉问候

  6.   斯蒂芬

    我也在考虑迁移到Gentoo,但我有一些疑问。 首先,Arch的软件包是最新的吗? 另一方面,我的笔记本电脑有内置电池,我们都知道持续不断的热量会对电池产生什么影响。 而且由于我将花费大量时间进行编译...

    1.    克里斯·阿德

      好吧,真相不能肯定地告诉您哪一个是滚动发布I我可以肯定地告诉您,Gentoo有两个分支:“稳定”和“不稳定”,尽管“不稳定”应该占多数在技​​术前沿的许多软件包中,我有许多知名的开发人员在日常工作中使用它而没有复杂性。 其中许多都是与项目的git存储库一起使用的,因此没有更多的最新信息🙂我个人使用“稳定”分支,但这尤其是因为我在社区中担任安全协调员,并且作为测试团队(Arch Tester)的成员。 如果您不必为该工作使用“稳定”版本,那么您肯定会处于“不稳定”技术的边缘。
      我不知道它是否能回答您的问题,但至少我希望它能引起您的注意,并可以尝试一下😛

  7.   免费吉x德

    事实是你让我想want
    我对您对C教程以及Python所讲的内容非常感兴趣,如果您有笨拙的祖父母的任何隐藏的珠宝,我将不胜感激。
    因为我认为内容比欧洲大陆更重要,所以请给我一些坚持和敬意,但是我对语言有点挑剔,我会告诉您一些事情。
    您在一开始就说:
    “编译是编译器使用人类语言编写的代码并将其转换为机器可以理解的代码时执行的过程。”
    我认为,包含定义中定义的内容是不正确的,因为要定义编译时就包含术语“编译器”,因此类似这样的方法会更正确一些:
    编译是程序通过计算机从以某种语言(C,C ++)编写的文本文件中获取可执行文件的过程。

    1.    克里斯·阿德

      您的贡献对我来说似乎是正确的,我正在接受它,以努力保持其本质并添加该信息😉谢谢。

  8.   双D

    我正在使用ubuntu 16.04,您认为我应该改用gentoo吗,gentoo与ubuntu相比有什么优势?

    1.    克里斯·阿德

      好吧,我真的不知道😛这取决于您将要使用的设备,所拥有的硬件或是否有时间(和愿望)学习如何使用Gentoo。 我会告诉你,如果有时间,并且愿意,可以前进! 并且您会发现您将在此过程中学到很多东西😉
      问候

  9.   费尔南

    你好
    如果事实是gentoo有很多可读性,例如,您制作了一个emerge -pv软件包,并获得了红色,蓝色和绿色的使用,再加上可能需要更改用途的锁,取消屏蔽软件包,更改插槽,这与实际情况大不相同。由其他包管理器显示。
    我认为gentoo必须每天进行更新,如果您将其保留1个月,那么该是时候找出解决方法了。
    问候。

    1.    克里斯·阿德

      是的,呵呵,乍一看有点ides,但随着时间的流逝,您逐渐熟悉,甚至想到了为什么在其他软件包管理器中,您没有这么大的灵活性?从时间上来说,我知道人们使用同一台服务器运行了多年无需更新,并且从开始的第一天起就一直很坚定,对于已经呆了多年(而不是几个月)的人们,Wiki中有一个特殊的部分描述了可能的解决方案:

      https://wiki.gentoo.org/wiki/Upgrading_Gentoo/es#Actualizar_sistemas_antiguos

      在更新方面,也许直接看到安全问题已使我有了新的看法,但是每天更新都是一件事情,无论应该执行哪个发行版,在所有发行版中通常都不需要两个以上的命令,并且在gentoo中,除了养成良好的习惯外,当所有软件包都已堆积时,避免长时间等待。
      问候

  10.   费尔南

    你好
    在二进制发行版中,我使用manjaro,在使用ubuntu之前,它很容易更新,我每天检查是否有更新,这是我要看的第一件事,但是在manjaro中,更新并没有给我带来相关问题,我通常告诉pacman,是的一切,至多必须更新签名,甚至删除文件。 但是从我在gentoo中阅读的内容来看,有时很难理解portage的含义。
    问候。

    1.    克里斯·阿德

      对所有问题说“是”,fernan永远都不是好事-如果您已经达到GNU / Linux,则应该了解并理解它。 好吧,没什么好看的,这只是简单的自定义,随着时间的流逝,您意识到红色就是您拥有的东西,蓝色不是您想要的东西,绿色您将要添加的东西,就是这样:)。 如果我已经正确配置,一开始我就不需要更改任何东西来更新,偶尔我会添加或删除USE标志,但是常见的事情是在阅读列表以了解正在做什么之后,将Y设置为yes
      PS:pacman -Syy与emerge -sync相同
      Pacman -Suy与emerge -uD @world相同(-av仅是冗长的,它在继续之前会询问您,如果您知道您的团队并且知道您在做什么,则不需要此操作,但是为了避免出现问题,我使用了它稍后😉)我不觉得很难记住🙂

      问候

  11.   毛里西奥·洛佩兹(Mauricio Lopez)

    出色的文章,无论是上一篇还是本篇。 我怀疑,这是您在Arch或Manjaro与Gentoo之间获得的速度。 无论是自定义还是自定义,它都值得安装。
    我还有一个问题是如何与驱动程序打交道,这使我在Arch中遇到了问题。

    1.    克里斯·阿德

      嗨毛,
      好吧,我从未停止过在这两者之间进行基准测试,实际上,这是一个非常模棱两可的问题,具体取决于您所使用的软件和所拥有的设备,这个变化可能很小,也可能根本没有。 至少对于今天而言,这两种系统在我需要使用它们的情况下都对我来说运行良好。 (我有时会使用主要的Gentoo和Arch)。通常我会在虚拟化和程序编辑中使用它(但通常是通过终端使用,因此它在IDE中不会占用太多内存。Chrome完全平静地为我提供了40多个选项卡) (虽然我一次又一次尝试过,尽管通常我最多只能长期开放5个。
      如果有一天你敢尝试,告诉我情况如何🙂

      至于驱动程序,由于您可以随意控制内核,因此通常大多数“通用”驱动程序都是可安装的,或者至少是可管理的。 对于非常专业的硬件(尤其是与Linux总体兼容的软件),我想这与许多其他发行版中的工作相同,我没有太多专业化的硬件,因此我无法对此发表过多评论🙂

      问候和运气

  12.   让比尔·苏伯罗

    您的社交网络ChirsADR是什么?