Gentoo: Dlaczego zdecydowałem się skompilować własne programy?

Biorąc pod uwagę świetne przyjęcie mojego poprzedniego posta, chciałbym opowiedzieć trochę więcej o mojej ulubionej dystrybucji, Gentoo Linux. Obiecuję, że ten post będzie zawierał zabawne informacje, które pomogą ci zrozumieć trochę o mitach, które powstają przed przerażającym kompilacja oprogramowania. Obiecuję również, że te informacje przydadzą się w następnym przewodniku instalacji Gentoo Linux w ~ 20 krokach (nie policzyłem ich jeszcze dobrze, ale myślę, że jest ich jeszcze mniej). Bez zbędnych ceregieli zacznijmy:

Co się kompiluje?

Jest to proces, który program (powszechnie nazywany kompilatorem) wykonuje w celu konwersji kodu napisanego w języku ludzkim (pliki C, C ++ itp.) Na kod zrozumiały dla maszyny (kod binarny). Spójrzmy na następujący przykład:

Projekt własny, Christopher Díaz Riveros

To jest nasz mały program w C (jeśli chcesz później skorzystać z innych samouczków w języku C, z przyjemnością pokażę Ci, czego nauczyłem się w tym czasie). Zobaczmy teraz, jak wygląda wynik po kompilacji.

Projekt własny, Chrirstopher Díaz Riveros

Piękne, prawda? 🙂 To jest to, co rozumie nasza maszyna, aby móc napisać to małe „Hello” w naszym terminalu za każdym razem, gdy program jest wykonywany.

Proces tworzenia:

Ponieważ nie ma sensu mieć programu, który wyświetla proste „Hello” na ekranie, ponieważ pliki .c i .h obfitują w projekty (jak we wszystkich językach programowania). Aby nieco uprościć proces kompilacji, pojawiły się nowe narzędzia, z których najbardziej reprezentatywna jest komenda robić.

Make weź plik Makefile jako punkt wyjścia i kompiluje to, co jest niezbędne do stworzenia końcowego pliku wykonywalnego, w niektórych przypadkach ten krok wymaga wykonania pliku o nazwie configure aby móc przypisać kilka zmiennych potrzebnych kompilatorowi do skompilowania (wybacz nadmiarowość) użytecznego pliku.

Dlatego w wielu samouczkach znajdziemy następujące kroki:

Posiadać. Christopher Diaz Riveros

Magia ./configure:

Aby pokazać Ci jeden z najbardziej ukrytych i zabawnych sekretów kodu źródłowego, przejdziemy do kodu źródłowego programu, który wszyscy doskonale znamy, sudo. Najpierw zwykłe kroki, ale skończę na . / Konfiguracja  pokazać im coś wyjątkowego.

Posiadać. Christopher Diaz Riveros

To zwróci długą listę opcji, wśród których pokażę Ci tę, która najbardziej przykuwa moją uwagę.

Posiadać. Christopher Diaz Riveros

--with-insults... jak sama nazwa wskazuje, kompiluje sudo z nadużycie 😀 to zabawna funkcja, która umożliwia wysłanie użytkownikowi zniewagi za każdym razem, gdy popełnia błąd w haśle. Po co to jest? Cóż, nie tak dawno temu 😛, ale wyjaśnia jedną kwestię. Istnieją tysiące opcji, które nie są domyślnie dostępne w większości dystrybucji.

Tak jak Ty, istnieje wiele innych, które mogą być aktywne w dystrybucjach kodu binarnego i których nigdy nie będziesz używać, lub będą takie, których potrzebujesz, ale nie będą one dostarczane z Twoim oficjalnym rozpowszechnianym plikiem binarnym, co oznacza, że ​​każda aktualizacja będzie ręczna.

Zacznij zabawę w Gentoo:

Widzieliśmy już, ile opcji można pominąć lub przeciągnąć za pomocą wstępnie skompilowanych programów. Ale teraz skupmy się trochę na wstępnie skompilowanym problemie.

Wydajność:

Czy zastanawiałeś się kiedyś, dlaczego nowe maszyny wyglądają tylko trochę szybciej w porównaniu do nie tak nowoczesnych? Jeśli procesor jest lepszy, jest więcej pamięci RAM, wszystko jest lepsze, dlaczego nie iść szybciej? Odpowiedź jest prosta ... kompilacja.

Weźmy bardzo praktyczny przykład.

Moje programy są kompilowane z opcją --march=broadwell... dzieje się tak, ponieważ mój procesor to broadwell (intel i7). Wadą tego? żaden procesor przed Broadwell nie jest w stanie rozpoznać tego pliku binarnego. W tym momencie powinieneś zobaczyć to bardzo wyraźnie, jeśli kompiluję z -Marsz  konkretnie, wszystkie powyższe nie będą działać ... więc w jaki sposób pakiety binarne obsługują tak wiele typów sprzętu? Łatwo, kompilują się z najmniejszą możliwą opcją 🙂 to gwarantuje, że wszystkie typy sprzętu będą w stanie je odczytać (przynajmniej dla kompatybilności).

Prawdziwy problem ... jeśli używasz programów, które są skompilowane dla i3 ... Cała moc twojego i7 (lub odpowiednich analogii AMD) jest marnowana !! Czy to nie jest smutne? 🙁

elastyczność:

Ponieważ deweloperzy Gentoo są bardzo sprytni, cały proces tar, ./configure, make, etc ... został zastąpiony mocą Przewóz. Wszystkie te dziwne konfiguracje zostały nazwane flagami USE, więc jeśli chcesz mieć określoną konfigurację, nie musisz wprowadzać kodu źródłowego, po prostu skonfiguruj zmienną. Oto przykład jak to zrobić z sudo w Portage. Najpierw zobaczymy, jakie opcje mamy w naszej obecnej konfiguracji Equery.

Posiadać. Christopher Diaz Riveros

Jak widać, czerwone opcje są aktywne, niebieskie nie, no cóż ... każdy może przeczytać legendę 🙂

powiedzmy, że chcę dodać opcję ...

Posiadać. Christopher Diaz Riveros

Tak proste, jak dodanie linii w pliku o nazwie sudo (nazwa jest referencyjna) wewnątrz /etc/portage/package.use/. Dzięki temu następnym razem, gdy zainstalujemy sudo, powie nam, że zostanie ono ponownie skompilowane z aktywowaną opcją.

Posiadać. Christopher Diaz Riveros

Jeśli damy, TAK, wszystko, co musisz zrobić, to trochę poczekać i voila 🙂 takie proste.

Końcowe przemyślenia:

Cóż, widzieliśmy już, jak łatwo jest obsłużyć dodatkowe funkcje w Gentoo, które pozwalają nam dodawać, usuwać lub modyfikować opcje w naszych ulubionych programach. Widzieliśmy również, jak wydajność naszych programów zależy w dużej mierze od zmiennych, z którymi je kompilujemy. Jeśli masz bardzo nową maszynę, Gentoo jest najlepszą opcją. Jeśli masz bardzo starą maszynę, Gentoo jest również Twoją opcją (chociaż kompilacja zajmuje trochę czasu, końcowe programy będą znacznie lżejsze).

Wkrótce napiszę swój przewodnik instalacji Gentoo, zarówno dla miłośników SystemD, jak i poszukiwaczy przygód z OpenRC (używam systemd z GNOME). Nawiasem mówiąc, kolejną wielką zaletą Gentoo jest możliwość wybierać wszystko w twoim systemie i kiedy mówię, że wszystko jest WSZYSTKO.

Jeśli przegapiłeś mój pierwszy post, oto link:

Gentoo Linux: historia podróży

Pozdrawiam,


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Targowisko powiedział

    Świetny! Będę czekał na przewodnik instalacji Gentoo z Gnome. Może zachęcam do migracji na Gentoo, nawet jeśli nadal mam nieco stary komputer (intel core i5 3. generacji). Twoje zdrowie!

    1.    Chrisadr powiedział

      Wkrótce Mart 😉 przekonał mnie do udostępnienia kolejnych rzeczy, więc napisałem kolejny post, który czeka na publikację, ale już niedługo 🙂 Obiecuję

  2.   Njord powiedział

    Myślę, że zacznę tu widzieć wiele postów o mojej ulubionej dystrybucji Linuksa o!!
    Jestem w Gentoo od 2005 roku, gdzie użyłem go do skonfigurowania serwera poczty na uniwersytecie, na którym studiowałem (i gdzie teraz pracuję) i chociaż miałem sporadyczne ataki na dystrybucję, zawsze wracałem z moimi drogimi Gertroodisami (najpierw z Gnome2, potem Xfce, a teraz openbox) i jak komentujesz w poprzednim poście, wraz z rosnącymi umiejętnościami i wiedzą, aby go dopracować 😉
    Będę czekał na Wasze kolejne wkłady, pozdrowienia i podziękowania za uczynienie mojego dnia = D!

    1.    Chrisadr powiedział

      Cóż, następny nadchodzi 🙂 to jak zabawna rozmowa na mój ulubiony temat, następny już niedługo, a następny i następny 😛 Pozdrawiam i bardzo dziękuję za komentarz

  3.   Zwycięzca powiedział

    Od lat skaczę między dystrybucjami i myślałem o skompilowaniu mojej…. ten przewodnik będzie krokiem, którego mi brakowało…. podczas gdy ja będę się bawić podręcznikiem. Dzięki za wszystko……

    1.    Chrisadr powiedział

      Cóż, podręcznik to raj informacji, jest po prostu wszystko 🙂 mogę wnieść tylko swoje małe ziarenko piasku 🙂 ale już niedługo wychodzi następny post, a wkrótce ukaże się ten (już widzę, że jest całkiem oczekiwany) ~ 20-stopniowy przewodnik instalacji. Twoje zdrowie,

      1.    Zwycięzca powiedział

        Co za dżentelmen, że nie dałeś mi czasu przejść od początku, który mówi o różnych mikroprocesorach, a przewodnik jest tutaj !!!!! Ten koniec mnie zawalił po PIERWSZYM! !!! Miliony podziękowań !!!!

  4.   sojmiczno-symimiczny powiedział

    Knoppix, Mandrake, Ubuntu i Debian ... I zawsze myśląc o Gentoo ...

    Czekam na te 20 kroków!

    1.    Chrisadr powiedział

      Hahaha, cóż, to jak sen, prawda? 🙂 Mówię, że nadszedł czas, aby to się stało 😉 pozdrowienia

  5.   Cool As Ice powiedział

    Cześć ChrisADR, najpierw chcę ci powiedzieć, że nie spałem dobrze od czasu twojego pierwszego artykułu o Gentoo i jest on powiązany z tym nowym artykułem. Moje marzenia opierają się na skompilowaniu Gentoo na moim starym Netbooku Aspire One. We śnie system mówi mi, że mój netbook jest bardzo stary, więc nie rozpoznaje sprzętu.
    Z drugiej strony, kiedy zobaczyłem Gentoo i zwróciło ono moją uwagę, wspomnieli o mocy, jaką oferuje komputerowi (komputerowi). Od tamtego dnia powiedziałem sobie, że kiedyś go zainstaluję, minęło ponad 10 lat i nie zrobiłem tego, być może dlatego, że powiedzieli mi, że jest to bardzo trudne do zainstalowania, w tamtym czasie byłem prawie anty-linuxowy, więc zwiększyli moje żale do niego. Jednak ciekawość trwała. Pewnego razu próbowałem bezskutecznie zainstalować BSD na moim netbooku i powiedziano mi, że Gentoo jest linuxem bardzo podobnym do BSD.
    Co mi polecasz zainstalować Gentoo na moim starym Aspire One ze starym kompilatorem Atom?

    i bardzo dziękuję za wasze artykuły, czekam na więcej

    1.    ChrisADR powiedział

      Cóż, polecam… ZRÓB TO! I w końcu, jeśli to się nie powiedzie (w co bardzo wątpię, ponieważ jądro jest stworzone do obsługi wszelkiego rodzaju sprzętu), będziesz miał niezwykle wzbogacające doświadczenie w świecie Linuksa 🙂 skompilowałeś swoje jądro, zamontowałeś swój system plików od podstaw, Stworzysz konfiguracje, które niewielu robi w swoim życiu 🙂 da ci to nową perspektywę na świat hahaha Jeśli nie widzisz mojego profilu Unix i StackExchange 🙂 moje odpowiedzi obejmują szeroki zakres Linuksa, ponieważ znajomość Gentoo pozwoliła mi dowiedzieć się wielu rzeczy o całym Linuksie 😉 Zostawiam link do mojego profilu

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

      Nie bój się, a na koniec, jeśli wszystko pójdzie dobrze (na pewno będzie to trochę kosztować) będzie to osiągnięcie dla Twojej książki 😉 Pozdrowienia

  6.   Esteban powiedział

    Myślę też o migracji do Gentoo, ale mam pewne wątpliwości. Przede wszystkim, jak aktualne są pakiety w Arch? Z drugiej strony mój laptop ma wbudowaną baterię i wszyscy wiemy, jak ciągłe nadmierne ciepło wpływa na baterie. A ponieważ spędziłbym dużo czasu na kompilacji ...

    1.    ChrisADR powiedział

      Cóż, prawda nie mogła ci powiedzieć na pewno, która z nich jest bardziej wydaniem kroczącym 😛 mogę powiedzieć z całą pewnością, że Gentoo ma dwie gałęzie: „stabilną” i „niestabilną”, chociaż większość musi mieć „niestabilna” liczba pakietów na krawędzi technologii, mam wielu znanych programistów, którzy używają jej na co dzień bez komplikacji. Wiele z nich jest przystosowanych do pracy z repozytoriami git projektu, więc nie ma nic bardziej aktualnego 🙂 Osobiście używam gałęzi „stabilnej”, ale jest to szczególnie spowodowane moją pracą w społeczności jako koordynator bezpieczeństwa i jako członek zespołu testowego (Arch Tester). Gdybyś nie musiał mieć „stabilnej” wersji do tego zadania, z pewnością byłbyś na krawędzi technologii z „niestabilną”.
      Nie wiem, czy odpowiada na Twoje pytanie, ale przynajmniej mam nadzieję, że zwróci Twoją uwagę na tyle, by spróbować 😛 Pozdrawiam

  7.   Darmowy Kichot powiedział

    Prawda jest taka, że ​​sprawiasz, że chcę 😉
    Jestem bardzo zainteresowany tym, co wskazałeś na temat samouczków C, a także Pythona i byłbym wdzięczny, gdybyś miał jakieś ukryte klejnoty dla niezdarnych dziadków.
    Za to, że dałem ci trochę kłopotów i z całym szacunkiem, ponieważ uważam, że treść jest ważniejsza niż kontynent, ale jak jestem trochę wybredny w języku, powiem ci trochę.
    Na początku mówisz:
    „Kompilacja to proces, który wykonuje kompilator, aby użyć kodu napisanego w ludzkim języku i przekształcić go w kod zrozumiały dla maszyny”.
    Moim zdaniem nie jest poprawne umieszczanie tego, co jest zdefiniowane w definicji, ponieważ do zdefiniowania kompilacji należy dołączyć termin kompilator, więc coś takiego byłoby bardziej poprawne:
    Kompilacja to proces, w którym program uzyskuje z pliku tekstowego napisanego w języku (C, C ++) plik wykonywalny przez komputer.

    1.    ChrisADR powiedział

      Twój wkład wydaje mi się słuszny, dostosowuję się do niego, starając się zachować jego istotę i dodać te informacje 😉 dziękuję.

  8.   Podwójne D powiedział

    Używam Ubuntu 16.04, czy myślisz, że powinienem przejść na gentoo? Jakie byłyby zalety Gentoo w porównaniu z Ubuntu?

    1.    ChrisADR powiedział

      Cóż, naprawdę nie wiem 😛 to zależy od tego, co zamierzasz zrobić ze swoim sprzętem lub sprzętem, który posiadasz, lub czy masz czas (i chęć), aby nauczyć się obsługi Gentoo. Powiedziałbym, że jeśli masz czas i masz na to ochotę, możesz PÓJŚĆ DALEJ! a zobaczysz, że po drodze wiele się nauczysz 😉
      pozdrowienia

  9.   Fernan powiedział

    Witam:
    Jeśli prawda jest taka, że ​​gentoo ma wiele do przeczytania, na przykład tworzysz pakiet emerge -pv i otrzymujesz zastosowania w kolorze czerwonym, niebieskim i zielonym, a także możliwe blokady, które wymagają zmiany użycia, zdemaskowania pakietów, zmiany slotów są bardzo różne wyświetlane przez innych menedżerów pakietów.
    Przypuszczam, że gentoo będzie musiało być aktualizowane codziennie, jeśli zostawisz go na 1 miesiąc, trzeba będzie dowiedzieć się, jak to naprawić.
    Pozdrowienia.

    1.    ChrisADR powiedział

      Tak, hehe, na początku trochę się rozmywa 🙂 ale z czasem poznajesz, a nawet zaczynasz myśleć, dlaczego w żadnym innym menedżerze pakietów nie masz tak dużej elastyczności 🙂 pod względem czasu znam ludzi, którzy mają ten sam serwer działający od lat bez aktualizacji i pozostaje całkowicie niezmienna od pierwszego dnia, a dla tych, którzy byli od lat (nie miesięcy), istnieje specjalna sekcja wiki opisująca możliwe rozwiązania problemu:

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

      A jeśli chodzi o aktualizacje, być może bezpośrednie spojrzenie na problemy z bezpieczeństwem skłoniło mnie do przyjęcia nowej perspektywy, ale aktualizowanie każdego dnia jest czymś, co niezależnie od dystrybucji powinno być wykonywane, zwykle nie wymaga więcej niż dwóch poleceń we wszystkich dystrybucjach , aw gentoo, oprócz tworzenia dobrego nawyku, unikaj długiego oczekiwania, gdy wszystkie pakiety są nagromadzone.
      pozdrowienia

  10.   Fernan powiedział

    Witam:
    W dystrybucjach binarnych używam manjaro i zanim użyłem ubuntu, łatwo jest zaktualizować, codziennie sprawdzam, czy są aktualizacje, to pierwsza rzecz, na którą patrzę, ale w manjaro aktualizacja nie sprawiła mi istotnych problemów, zwykle mówię pacmanowi, że tak do wszystkiego i co najwyżej do aktualizacji podpisów lub nawet usunięcia pliku. Jednak z tego, co przeczytałem w gentoo, czasami trudno zrozumieć, co mówi portage.
    Pozdrowienia.

    1.    ChrisADR powiedział

      Powiedz tak, że wszystko nigdy nie jest dobre, fernan 🙂 jeśli osiągnąłeś GNU / Linuksa, powinieneś to wiedzieć i rozumieć. Cóż, nic do zobaczenia, to po prostu zwyczaj, z czasem zdajesz sobie sprawę, że czerwony jest tym, co masz, niebieski, czego nie masz, zielony, co zamierzasz dodać i to wszystko :). Nigdy nie muszę niczego zmieniać do aktualizacji, jeśli skonfigurowałem poprawnie do startu, czasami dodam lub usuwam flagi USE, ale częstą rzeczą jest udzielenie Y na tak po przeczytaniu listy, aby wiedzieć, co się dzieje 🙂
      PS: pacman -Syy jest tym samym, co emerge -sync
      Pacman -Suy jest tym samym, co emerge -uD @world (-av ma być tylko gadatliwe i pyta Cię przed kontynuowaniem, co jest niepotrzebne, jeśli znasz swój zespół i wiesz, co robisz, ale kładę to, aby uniknąć problemów później 😉) Nie wydaje mi się, żeby było to takie trudne do zapamiętania 🙂

      pozdrowienia

  11.   Mauricio Lopez powiedział

    Doskonale swoje artykuły, zarówno poprzedni, jak i ten. Mam pytanie i chodzi o to, ile prędkości zyskujesz między Arch lub Manjaro a Gentoo. Niezależnie od dostosowania i uczenia się jako takiego, sprawiają, że warto je zainstalować.
    Kolejne pytanie, które mam, to jak sobie radzić ze sterownikami, to jest coś, co sprawiło mi problemy w Arch.

    1.    ChrisADR powiedział

      Cześć Mauricio,
      Cóż, nigdy nie zatrzymałem się na testach porównawczych między tymi dwoma iw rzeczywistości jest to bardzo niejednoznaczne pytanie, w zależności od używanego oprogramowania i posiadanego sprzętu, może się to różnić od niewielkiego lub zerowego do dużego. Przynajmniej na dzień dzisiejszy oba systemy działają dla mnie całkiem dobrze w tym, czego potrzebuję, aby z nich korzystać. (Mam główny Gentoo i Arch, którego używam od czasu do czasu) Zwykle używam go do wirtualizacji i edycji programów (ale zwykle przez terminal, więc nie zajmuje dużo pamięci w IDE. Chrome obsługuje mnie w całkowicie spokojny sposób ponad 40 kart (Próbowałem tego od czasu do czasu, chociaż generalnie mam tylko maksymalnie 5 otwartych na długie okresy.
      Jeśli pewnego dnia odważysz się spróbować, powiedz mi, jak poszło 🙂

      Jeśli chodzi o sterowniki, ponieważ kontrolujesz jądro do woli, zwykle większość "typowych" sterowników można zainstalować lub przynajmniej zarządzać. W przypadku wysoce wyspecjalizowanego sprzętu (szczególnie mało kompatybilnego z Linuksem w ogóle), przypuszczam, że jest to ta sama praca, co w wielu innych dystrybucjach, nie mam zbyt wyspecjalizowanego sprzętu, więc nie mogę wiele komentować 🙂

      Pozdrowienia i szczęście

  12.   Jeanpier subero powiedział

    jakie są twoje sieci społecznościowe ChirsADR?