Gentoo: Proč jsem se rozhodl kompilovat své vlastní programy?

Vzhledem k velkému přijetí mého předchozího příspěvku vám řeknu něco více o mé oblíbené distribuci Gentoo Linux. Slibuji, že tento příspěvek bude obsahovat zábavné informace, které vám pomohou trochu porozumět mýtům, které vznikají před hrůzostrašnými kompilace softwaru. Také slibuji, že tyto informace budou užitečné pro příštího průvodce instalací Gentoo Linuxu v ~ 20 krocích (zatím jsem je nepočítal dobře, ale myslím, že jsou ještě méně). Bez dalších okolků začněme:

Co je kompilace?

Jedná se o proces prováděný programem (běžně nazývaným kompilátor) pro převod kódu napsaného v lidském jazyce (soubory C, C ++ atd.) Do kódu, kterému stroj rozumí (binární kód). Podívejme se na následující příklad:

Vlastní design, Christopher Díaz Riveros

Toto je náš malý program C (pokud budete chtít později další C tutoriály, rád vám ukážu, jak málo jsem se toho naučil i tentokrát). Nyní se podívejme, jak vypadá výstup po kompilaci.

Vlastní design, Chrirstopher Díaz Riveros

Nádhera, že? 🙂 Tomu náš stroj rozumí, že dokáže napsat to malé „Hello“ do našeho terminálu pokaždé, když je program spuštěn.

Proces sestavení:

Protože je zbytečné mít program, který vytiskne na obrazovku jednoduché „Hello“, protože v projektech je mnoho souborů .c a .h (stejně jako ve všech programovacích jazycích). Aby se proces kompilace trochu usnadnil, objevily se nové nástroje, nejreprezentativnějším ze všech je příkaz činit.

Make vzít soubor Makefile Jako výchozí bod a kompilace toho, co je nezbytné k vytvoření konečného spustitelného souboru, je v některých případech tento krok vyžadován spuštěním souboru s názvem configure mít možnost přiřadit několik proměnných nezbytných pro kompilátor ke kompilaci (odpuštění redundance) užitečného souboru.

To je důvod, proč v mnoha výukových programech najdeme následující kroky:

Vlastní. Christopher Diaz Riveros

Kouzlo ./configure:

Abychom vám ukázali jedno z nejskrytějších a nejzábavnějších tajemství zdrojového kódu, přejdeme ke zdrojovému kódu programu, který všichni dokonale známe, sudo. Nejprve obvyklé kroky, ale zastavím se . / Configure  ukázat jim něco zvláštního.

Vlastní. Christopher Diaz Riveros

Tím se vrátí dlouhý seznam možností, z nichž vám ukážu ten, který mě nejvíce upoutá.

Vlastní. Christopher Diaz Riveros

--with-insults... jak název napovídá, kompiluje sudo s zneužívání 😀 je zábavná funkce, která umožňuje uživateli poslat urážku pokaždé, když udělá chybu ve svém hesle. K čemu to je? No, není to tak dávno 😛, ale objasňuje to. Existují tisíce možností, které ve většině distribucí ve výchozím nastavení nepřicházejí.

Jak jste, existuje mnoho dalších, kteří mohou být aktivní v distribucích binárních kódů a které nikdy nebudete používat, nebo budou nějaké, které budete potřebovat, ale nepřijdou s vaším oficiálním distribuovaným binárním souborem, což znamená, že každá aktualizace bude manuální.

Získejte zábavu na Gentoo:

Již jsme viděli, kolik možností nám může chybět nebo přetáhnout pomocí předkompilovaných programů. Nyní se ale trochu zaměřme na předkompilovaný problém.

Výkon:

Přemýšleli jste někdy, proč nové stroje vypadají jen o něco rychleji ve srovnání s ne tak moderními? Pokud je procesor lepší, je zde více RAM, všechno je lepší, proč ne jít rychleji? Odpověď je jednoduchá ... sestavení.

Vezměme si velmi praktický příklad.

Moje programy jsou kompilovány s možností --march=broadwell... je to proto, že můj procesor je Broadwell (Intel i7). Nevýhodou tohoto? žádný procesor před Broadwell není schopen tuto binárku rozpoznat. V tomto okamžiku byste to měli vidět velmi jasně, pokud kompiluji s a -Březen  konkrétní, všechny výše uvedené nebudou fungovat ... tak jak binární balíčky podporují tolik typů hardwaru? Snadno, kompilují se s nejmenší možnou možností 🙂 to zaručuje, že všechny typy hardwaru jej budou moci číst (alespoň pro kompatibilitu).

Skutečný problém ... pokud používáte programy kompilované pro i3 ... Veškerá síla vašeho i7 (nebo jejích analogií AMD) je zbytečná !! Není to smutné? 🙁

flexibilita:

Jelikož vývojáři Gentoo jsou velmi chytří, byl celý tento proces tar, ./configure, make, atd ... nahrazen silou Dopravné. Všechna tato zvědavá nastavení byla přejmenována na USE flags, takže pokud chcete konkrétní nastavení, nemusíte zadávat zdrojový kód, stačí nastavit proměnnou. Zde je příklad toho, jak to udělat pomocí sudo in portage. Nejprve uvidíme, jaké možnosti máme v naší aktuální konfiguraci rovina.

Vlastní. Christopher Diaz Riveros

Jak vidíme, červené možnosti jsou aktivovány, modré nejsou, no ... legendu si může přečíst každý 🙂

řekněme, že chci přidat možnost ...

Vlastní. Christopher Diaz Riveros

Jednoduché jako přidání řádku do souboru s názvem sudo (název je referenční) v rámci /etc/portage/package.use/. Díky tomu nám při příští instalaci sudo řekne, že bude znovu zkompilován s aktivovanou možností.

Vlastní. Christopher Diaz Riveros

Pokud dáme, ANO, vše, co musíte udělat, je trochu počkat a voila 🙂 tak jednoduché, jako je toto.

Závěrečné myšlenky:

Už jsme viděli, jak snadné je zvládnout další funkce v Gentoo, což nám umožňuje přidávat, odebírat nebo upravovat možnosti v našich oblíbených programech. Také jsme viděli, jak výkon našich programů hodně závisí na proměnných, s nimiž jej kompilujeme. Pokud máte zcela nový stroj, Gentoo je vaše nejlepší volba. Pokud máte velmi starý stroj, Gentoo je také vaše volba (kompilace sice chvíli trvá, ale konečné programy budou mnohem lehčí).

Brzy budu psát svého průvodce instalací Gentoo, a to jak pro milovníky SystemD, tak pro dobrodruhy OpenRC (používám systemd s GNOME). Mimochodem, další z velkých výhod Gentoo je možnost vybrat všechno uvnitř vašeho systému, a když řeknu, že všechno je ALL.

Pokud jste zmeškali můj první příspěvek, zde je odkaz:

Gentoo Linux: Příběh cesty

S pozdravem,


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Mart řekl

    Skvělý! Budu čekat na instalačního průvodce Gentoo s Gnome. Možná jsem vyzván k migraci na Gentoo, i když stále mám trochu starý počítač (Intel Core i5 3. gen.). Na zdraví!

    1.    chrisadr řekl

      Mart ganó si mě brzy získal, abych mohl sdílet více věcí, a tak jsem napsal další příspěvek, který čeká na zveřejnění, ale velmi brzy 🙂 slibuji

  2.   njord řekl

    Myslím, že zde začnu vidět spoustu příspěvků o mé oblíbené linuxové distribuci o!!
    V Gentoo jsem od roku 2005, kde jsem jej použil k vytvoření poštovního serveru na univerzitě, kde jsem studoval (a kde nyní pracuji), a přestože jsem utrpěl sporadické distrohoppingové útoky, vždy se nakonec vrátím se svou drahou Gertroodis (první s Gnome2, pak Xfce a nyní openbox) a jak komentujete ve svém předchozím příspěvku, s rostoucími dovednostmi a znalostmi k jeho vyladění 😉
    Budu čekat na vaše další příspěvky, pozdravy a poděkování za to, že jste si udělali můj den = D!

    1.    chrisadr řekl

      No, vychází další 🙂 je to jako bavit se o mém oblíbeném tématu, další brzy a další a další 😛 Zdravím a děkuji vám za komentář 🙂

  3.   Vítěz řekl

    Skákal jsem mezi distribucemi už roky a přemýšlel jsem o kompilaci svého… tento průvodce bude krokem, který mi chyběl…. zatímco se budu bavit příručkou. Děkuji za všechno……

    1.    chrisadr řekl

      Příručka je rájem informací, je tu prostě všechno 🙂 Mohu jen přispět svým malým zrnkem písku 🙂 ale velmi brzy vyjde další příspěvek a brzy vyjde ten (už vidím, že to je docela očekáváno) ~ 20 kroků průvodce instalací. Na zdraví,

      1.    Vítěz řekl

        Jaký gentleman jste mi od začátku nedali čas projít tím, že hovoří o různých mikroprocesorech a průvodce je tady !!!!! Tento můj konec se pokazil na PRVNÍ! !!! Miliony díky !!!!

  4.   sojový řekl

    Knoppix, Mandrake, Ubuntu a Debian ... A vždy myslet na Gentoo ...

    Čekání na těch 20 kroků!

    1.    chrisadr řekl

      Hahaha, je to jako sen, že? 🙂 Říkám, že je čas to uskutečnit 😉 pozdravy

  5.   Cool As Ice řekl

    Dobrý den, ChrisADR, nejprve vám chci říct, že jsem nespal dobře od vašeho prvního článku o Gentoo a souvisí s tímto novým článkem, mé sny jsou založeny na kompilaci Gentoo na mém starém netbooku Aspire One. Ve snu mi systém říká, že můj netbook je velmi starý, takže nerozpozná hardware.
    Na druhou stranu, jakmile jsem viděl Gentoo a zaujalo mě to, zmínili se o síle, kterou nabízel počítači (počítači). Od toho dne jsem si řekl, že jednoho dne si jej nainstaluji, uplynulo více než 10 let a já jsem to neudělal, snad proto, že mi řekli, že je velmi těžké jej nainstalovat, v té době jsem byl téměř anti-linux tak zvýšili mé stížnosti na to. Zvědavost však pokračovala. Jednou jsem se pokusil nainstalovat BSD na svůj netbook bez úspěchu a bylo mi řečeno, že Gentoo je velmi linux podobný BSD.
    Co mi doporučujete k instalaci Gentoo na můj starý Aspire One se starým kompilátorem Atom?

    a moc vám děkuji za vaše články. Stále čekám na další

    1.    ChrisADR řekl

      Doporučuji vám ... DĚLAT to! a nakonec, pokud nakonec selže (o čemž hodně pochybuji, protože jádro je vyrobeno tak, aby podporovalo všechny druhy hardwaru), budete mít ve světě Linuxu extrémně obohacující zážitek 🙂 budete mít kompilované jádro, budete připojovat svůj souborový systém od nuly, uděláte konfigurace, které ve svém životě dělá jen málokdo 🙂 dá vám to nový pohled na svět hahaha Pokud nevidíte můj profil Unix & StackExchange 🙂 moje odpovědi pokrývají širokou škálu linuxu, protože znalost Gentoo mi umožnila naučit se mnoho věcí o všech Linuxech 😉 Zde vám nechávám odkaz na můj profil

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

      Nebojte se a nakonec, pokud vše půjde dobře (určitě to bude stát trochu), bude to pro vaši knihu úspěch 😉 Zdravím

  6.   Esteban řekl

    Uvažuji také o migraci do Gentoo, ale mám určité pochybnosti. Za prvé, jak aktuální jsou balíčky pro Arch? Na druhou stranu má můj notebook vestavěnou baterii a všichni víme, co s bateriemi dělá trvalé nadměrné teplo. A protože bych strávil spoustu času sestavováním ...

    1.    ChrisADR řekl

      Pravda vám nemohla s jistotou říci, která z nich je více Rolling Release 😛 s jistotou vám mohu říci, že Gentoo má dvě větve: „stabilní“ a „nestabilní“, i když „nestabilní“ musí mít většinu množství balíků na hraně technologie, mám mnoho známých vývojářů, kteří to používají ve své každodenní práci bez komplikací. Mnoho z nich je vytvořeno pro práci s repozitáři git projektu, takže není nic aktuálnějšího 🙂 Osobně používám "stabilní" větev, ale je to zejména kvůli mé práci v komunitě jako bezpečnostní koordinátor a jako člen testovacího týmu (Arch Tester). Pokud byste pro tuto práci nemuseli mít „stabilní“ verzi, určitě byste byli na okraji technologie s „nestabilní“.
      Nevím, jestli odpovídá na vaši otázku, ale alespoň doufám, že vás dostatečně zaujme, abyste to zkusili 😛 S pozdravem

  7.   Zdarma Quijote řekl

    Pravda je, že kvůli tobě chci 😉
    Velmi mě zajímá, co jste naznačili o C tutoriálech, stejně jako o Pythonu, a ocenil bych, pokud máte nějaké skryté klenoty pro neohrabané prarodiče.
    Za to, že vám dávám nějaké zádrhely a se všemi mými úctami, protože věřím, že obsah je důležitější než kontinent, ale jak jsem trochu rozrušený jazykem, povím vám malou věc.
    Na začátku říkáš:
    „Kompilace je proces, který kompilátor provádí, aby použil kód napsaný v lidském jazyce a převedl jej na strojově čitelný kód.“
    Podle mého názoru není správné zahrnout to, co je definováno v definici, protože k definování kompilace zahrnete termín kompilátor, takže něco takového by bylo poněkud správnější:
    Kompilace je proces, kterým program získává z textového souboru napsaného v jazyce (C, C ++) soubor spustitelný počítačem.

    1.    ChrisADR řekl

      Váš příspěvek se mi zdá správný, chci se mu přizpůsobit a pokusit se ho udržet ve své podstatě a přidat tuto informaci 😉 děkuji.

  8.   Double D řekl

    Používám ubuntu 16.04, myslíte si, že bych měl přejít na gentoo? Jaké by byly výhody gentoo oproti ubuntu?

    1.    ChrisADR řekl

      No, opravdu nevím 😛 záleží na tom, co budete dělat se svým vybavením nebo hardwarem, který máte, nebo jestli máte čas (a touhu) naučit se používat Gentoo. Řekl bych vám, že pokud máte čas a chcete, můžete DOPŘED! a uvidíte, že se během toho hodně naučíte 😉
      pozdravy

  9.   Fernan řekl

    Ahoj
    Pokud je pravda, že gentoo má hodně co číst, například vytvoříte balíček emerge -pv a získáte použití v červené, modré a zelené barvě, plus možné zámky, které vyžadují změny použití, odmaskovat balíčky, změny slotů se velmi liší od toho, co zobrazují ostatní správci balíků.
    Předpokládám, že gentoo bude muset být aktualizováno každý den, pokud ho necháte po dobu 1 měsíce, bude čas přijít na to, jak to opravit.
    Zdravím.

    1.    ChrisADR řekl

      Ano, hehe, zpočátku to trochu přílivy 🙂 ale postupem času se seznámíte a dokonce se dostanete do bodu přemýšlení, proč v žádném jiném správci balíčků nemáte tolik flexibility 🙂 z hlediska času znám lidi, kteří mají stejné server běží roky bez aktualizace a zůstává úplně pevný jako první den, a pro ty, kteří tam jsou roky (ne měsíce), existuje speciální část wiki popisující možná řešení problému:

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

      A pokud jde o aktualizace, možná díky přímému pohledu na bezpečnostní problémy mě zaujala nová perspektiva, ale aktualizace každý den je něco, co by bez ohledu na distribuci mělo být provedeno, obvykle ve všech distribucích nebere více než dva příkazy a v gentoo se kromě vytváření dobrého zvyku vyhněte dlouhému čekání, až se nahromadí všechny balíčky.
      pozdravy

  10.   Fernan řekl

    Ahoj
    V binárních distribucích používám manjaro a předtím, než jsem použil ubuntu, je snadné jej aktualizovat, každý den kontroluji, zda existují aktualizace, je to první věc, na kterou se podívám, ale aktualizace manjaro mi nedala relevantní problémy, obvykle říkám pacmanovi, že ano ke všemu a nanejvýš muset aktualizovat podpisy nebo dokonce smazat soubor. Ale z toho, co jsem četl v gentoo, je terminologie někdy obtížné pochopit, co říká portage.
    Zdravím.

    1.    ChrisADR řekl

      Řekněte ano všemu fernan není nikdy dobrý 🙂 pokud jste dosáhli GNU / Linux, měli byste to vědět a rozumět mu. No, nic k vidění, je to prostě zvyk, postupem času si uvědomíte, že červená je to, co máte, modrá, co nemáte, zelená, co přidáte a to je vše :). Nikdy nemusím nic měnit, abych aktualizoval, pokud jsem správně nakonfiguroval, občas přidám nebo odstraním příznaky USE, ale běžnou věcí je dát Y ano po přečtení seznamu, abych věděl, co se děje 🙂
      PS: pacman -Syy je stejný jako emerge -sync
      Pacman -Suy je stejný jako emerge -uD @world (-av má být jen podrobný a před pokračováním se vás zeptá, což je zbytečné, pokud znáte svůj tým a víte, co děláte, ale já se tomu vyhýbám problémy později 😉) Nevidím to tak těžké si pamatovat 🙂

      pozdravy

  11.   Mauricio Lopez řekl

    Vynikající vaše články, jak předchozí, tak tento. Pochybuji a je to, jakou rychlost získáte mezi Archem nebo Manjarem a Gentoo. Bez ohledu na přizpůsobení a učení jako takové to stojí za instalaci.
    Další otázka, kterou mám, je, jak zacházet s řidiči, to je něco, co mi způsobilo problémy v Archu.

    1.    ChrisADR řekl

      Hola Mauricio,
      Nikdy jsem nepřestal srovnávat mezi těmito dvěma a ve skutečnosti je to velmi nejednoznačná otázka, v závislosti na softwaru, který používáte, a vybavení, které máte, se může lišit od malého nebo nic k hodně. Alespoň pro dnešek pro mě oba systémy fungují docela dobře, když je potřebuji používat. (Mám hlavní Gentoo a Arch, které čas od času používám) Normálně ho používám při virtualizaci a editaci programu (ale obvykle pomocí terminálu, takže v IDE nevyužívá mnoho paměti. Chrome mě podporuje naprosto klidně více než 40 karet (Zkoušel jsem to čas od času, i když obecně mám otevřeno pouze maximálně 5 po dlouhou dobu.
      Pokud se jednoho dne odvážíte zkusit, řekněte mi, jak to šlo 🙂

      Pokud jde o ovladače, protože jádro ovládáte podle libosti, obvykle je většina „běžných“ ovladačů instalovatelných nebo alespoň spravovatelných. V případě velmi specializovaného hardwaru (zejména málo kompatibilního s Linuxem obecně) předpokládám, že je to stejná práce jako v mnoha jiných distribucích, nemám moc specializovaného hardwaru, takže k němu nemohu moc komentovat 🙂

      Zdravím a hodně štěstí

  12.   Jeanpier subero řekl

    jaké jsou vaše sociální sítě ChirsADR?