Gentoo: Защо избрах да съставя свои програми?

Е, като се има предвид страхотното приемане на предишния ми пост, идвам да ви разкажа малко повече за любимата ми дистрибуция, Gentoo Linux. Обещавам, че тази публикация ще съдържа забавна информация, която ще ви помогне да разберете малко за митовете, които възникват пред страховитите компилация на софтуера. Обещавам също, че тази информация ще бъде полезна за следващото ръководство за инсталиране на Gentoo Linux в ~ 20 стъпки (все още не съм ги преброила добре, но мисля, че са още по-малко). Без повече шум, нека започнем:

Какво представлява компилирането?

Това е процесът, който една програма (обикновено наричана компилатор) извършва за преобразуване на код, написан на човешки език (C, C ++ файлове и др.) В код, който може да бъде разбран от машина (двоичен код). Нека разгледаме следния пример:

Собствен дизайн, Кристофър Диас Риверос

Това е нашата малка програма C (ако по-късно искате други уроци за C, ще се радвам да ви покажа и малкото, което съм научил за това време). Сега нека видим как изглежда изходът след компилиране.

Собствен дизайн, Chrirstopher Díaz Riveros

Красиво, нали?  Това е, което нашата машина разбира, за да може да напише това малко „Здравей“ в нашия терминал всеки път, когато програмата се изпълнява.

Процесът на изграждане:

Тъй като е безполезно да има програма, която да отпечатва просто „Здравейте“ на екрана, тъй като .c и .h файлове са в изобилие в проекти (както във всички програмни езици). За да улесни процеса на компилация, се появиха нови инструменти, най-представителната от всички е командата правя.

Make вземете файл Makefile като отправна точка и компилира необходимото за създаване на крайния изпълним файл, в някои случаи тази стъпка изисква изпълнение на файл, наречен configure за да може да присвои няколко променливи, необходими на компилатора да компилира (да прости излишъка) полезен файл.

Ето защо в много уроци ще намерим следните стъпки:

Собствен. Кристофър Диас Риверос

Магията на ./configure:

За да ви покажем една от най-скритите и забавни тайни на изходния код, ще преминем към изходния код на програма, която всички знаем перфектно, Sudo. Първо обичайните стъпки, но ще спра на . / Configure  за да им покажете нещо специално.

Собствен. Кристофър Диас Риверос

Това ще върне дълъг списък с опции, сред които ще ви покажа тази, която най-много привлича вниманието ми.

Собствен. Кристофър Диас Риверос

--with-insults... както подсказва името, компилира sudo с злоупотреба  е забавна функция, която ви позволява да обиждате потребителя всеки път, когато въведе грешна парола. за какво е? Е, това не прави много , но изяснява нещо. Има хиляди опции, които не са включени в повечето дистрибуции.

Както и вие, има много други, които може да са активни в разпространението на двоичен код и които никога няма да използвате, или ще има такива, от които се нуждаете, но те няма да идват с официалния ви разпределен двоичен файл, което предполага, че всяка актуализация ще бъде ръчна.

Вземете забавлението на Gentoo:

Вече видяхме колко опции можем да пропуснем или да влачим с предварително компилирани програми. Но сега нека се съсредоточим малко върху предварително съставения проблем.

Изпълнение:

Замисляли ли сте се защо новите машини изглеждат само малко по-бързо в сравнение с не толкова модерните? Ако процесорът е по-добър, има повече RAM, всичко е по-добре, защо не отидете по-бързо? Отговорът е прост ... компилация.

Да вземем много практичен пример.

Моите програми са компилирани с опцията --march=broadwell... това е така, защото моят процесор е broadwell (intel i7). Недостатъкът на това? никой процесор преди Broadwell не е в състояние да разпознае този двоичен файл. В този момент трябва да го видите много ясно, ако компилирам с -Март  конкретно, всичко по-горе няма да работи... тогава как бинарните пакети поддържат толкова много видове хардуер? Лесно, те се компилират с възможно най-малко опции  това гарантира, че всички видове хардуер ще могат да го четат (поне за съвместимост).

Истинският проблем... ако използвате програми, които са компилирани за i3... Цялата мощност на вашия i7 (или съответните му AMD аналози) се губи!! Не е ли тъжно? 

гъвкавост:

Тъй като разработчиците на Gentoo са много умни, целият този процес на tar, ./configure, make и т.н ... е заменен със силата на пренос. Всички тези любопитни настройки са преименувани на USE флагове, така че ако искате конкретна настройка, не е нужно да въвеждате изходния код, просто задайте променливата. Ето пример за това как да го направите със sudo в portage. Първо ще видим с какви опции разполагаме в текущата ни конфигурация еквери.

Собствен. Кристофър Диас Риверос

Както виждаме, червените опции са активирани, сините не са, добре… всеки може да прочете легендата 

да кажем, че искам да добавя опция ...

Собствен. Кристофър Диас Риверос

Толкова просто като добавяне на ред във файл, наречен Sudo (името е референтно) в рамките на /etc/portage/package.use/. С това следващия път, когато инсталираме sudo, той ще ни каже, че ще бъде прекомпилиран с активирана опция.

Собствен. Кристофър Диас Риверос

Ако дадем, ДА, всичко, което трябва да направите, е да изчакате малко и това е  толкова просто.

Заключителни мисли:

Е, вече видяхме колко лесно е да се справим с допълнителна функционалност в Gentoo, която ни позволява да добавяме, премахваме или модифицираме опции в нашите любими програми. Също така видяхме как изпълнението на нашите програми зависи много от променливите, с които го компилираме. Ако имате много нова машина, Gentoo е най-добрият ви вариант. Ако имате много стара машина, Gentoo също е вашият вариант (въпреки че отнема известно време, за да се компилира, крайните програми ще бъдат много по-леки).

Скоро ще напиша ръководството си за инсталиране на Gentoo, както за любителите на SystemD, така и за авантюристите на OpenRC (използвам systemd с GNOME). Между другото, друго от големите предимства на Gentoo е възможността за избирам всичко във вашата система и когато кажа, че всичко е ALL.

Ако сте пропуснали първата ми публикация, ето линка:

Gentoo Linux: Историята на едно пътуване

С уважение,


Добавяне като предпочитан източник