Gentoo:我為什麼選擇編譯自己的程序?

好吧,鑑於我之前的帖子獲得了熱烈的歡迎,我來告訴您更多有關我最喜歡的發行版Gentoo Linux的信息。 我保證這篇文章將提供有趣的信息,可以幫助您了解一些關於可怕事物的神話。 合編 軟件。 我還承諾,這些信息將在大約20個步驟後對下一個Gentoo Linux安裝指南有用(我對它們的了解還不夠,但是我認為它們甚至更少)。 事不宜遲,讓我們開始:

編譯什麼?

程序(通常稱為編譯器)執行的過程是將以人類語言編寫的代碼(C,C ++文件等)轉換為機器可以理解的代碼(二進制代碼)的過程。 讓我們看下面的例子:

自己的設計,克里斯托弗·迪亞斯·里維羅斯(ChristopherDíazRiveros)

這是我們的小C程序(如果以後需要其他C教程,我也很樂意向您展示這段時間我學到了什麼)。 現在讓我們看一下編譯後的輸出。

自己的設計,ChrirstopherDíazRiveros

美麗,不是嗎? is這就是我們的機器理解為每次執行程序時都可以在終端中寫入很少的“ Hello”。

構建過程:

因為沒有一個程序在屏幕上打印一個簡單的“ Hello”,因為.c和.h文件在項目中比比皆是(就像所有編程語言一樣)。 為了簡化編譯過程,出現了新工具,其中最有代表性的是命令 使.

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世界中擁有極其豐富的經驗🙂您將編譯內核,您將擁有從頭開始安裝文件系統,您將進行很少使用的配置🙂它將為您提供一個新的世界觀hahaha如果您看不到我的Unix&StackExchange配置文件🙂我的答案涵蓋了廣泛的linux是因為了解Gentoo使我了解了有關所有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.    克里斯·阿德 他說:

      是的,呵呵,乍一看有點🙂,但是隨著時間的流逝,您逐漸熟悉,甚至想到了為什麼在其他軟件包管理器中,您沒有那麼多的靈活性🙂就時間而言,我知道擁有相同服務器的人運行了好幾年沒有更新,並且從開始的第一天起就一直很牢固,對於已經呆了多年(而不是幾個月)的人,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是什麼?