Защо е по-добре да се компилира, отколкото да се инсталира от хранилищата

В това малко ръководство ще обясня (и ще ви науча) защо е по-добре да компилирате програма (да речем Firefox, Vlc и т.н.) от нейния изходен код, отколкото да я изтеглите (от Софтуерния център, Yumex, Pacman и т.н. ) и инсталирайте.

Първо се насочваме към теорията:

Какво е "компилиране"?

Компилирането е трансформиране на изходния код (код, написан на определен програмен език, да речем C, C ++ и др.) В изпълнима програма за неговата работа чрез използването на процесора за преобразуване на езика, използван за генериране на кода, в двоичен асемблер. Също така често се нарича опаковка.

Защо е по-добре да "компилирам"?

Първо трябва да знаете следното, за да разберете защо. Казано по «груб» начин (прост, не много професионален и т.н.), всяка раса (Pentium, Core, Atom и т.н.) и нейните видове (Intel, AMD, ARM и др.) На процесора имат инструкции (софтуер, написан в асемблер който обработва кода) на техния модел (Core i7, Core i5, Atom x2, Phantom x8, Arm и др.) и също така имат общи инструкции, които имат всички от техния вид.

Когато изтегляте от хранилищата чрез Софтуерния център / apt-get / Yumex / Yum / Pacman / и т.н., програма, която се инсталира автоматично казва, че това компилиран за работа на всички възможни процесори (Intel и Amd). Тъй като това е предварително компилирана програма, тези инструкции, типични за конкретния модел процесор, се губят (помислете, че ако програма като Firefox или Chrome, която има повече от 7 или 8 милиона реда код, те трябва да поставят всички конкретни инструкции за всеки процесор на пазара, количеството код би било толкова голямо, че тази програма вече няма да бъде ефективна), оставяйки нищо повече от общите на създателя си марка (Intel, Amd, Arm).

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

В по-технически подробности тези конкретни инструкции са тясно свързани с това, което е известно като чипсет на вашата дънна платка, което е голямото главоболие за тези от нас, които имат Intel, когато искаме да надстроим процесора и дънната платка.

Ще бъдете изненадани от силата, която вашата amd atom x2 или ти Intel Core отвътре, Основна 2 Duo, i3, и т.н. от вашия стар компютър. Сега разбирате ли защо в света на Linux се говори много за компилиране на прочутото ядро ​​(сърцето на всяка операционна система)? Представете си, ако компилирате цяла система (графична среда (Gnome, Kde и т.н.), ядро, често използвани програми (Firefox, Vlc, Chrome, Wine и др.), Специално за вашия компютър) цялата скорост и ниво на оптимизация, които бихте имали.

Този принцип на компилация за получаване на код, оптимизиран специално за вашата машина, е този, използван от дистрибуции като Gentoo и деривати (за които няма да говоря сега, използвам Fedora minimal с компилация на Gnome 3, ядрото и други програми), където системата , вашите актуализации и вашите програми винаги се компилират.

Недостатъци на компилацията:

Вече обясних всички предимства, но като всичко във Вселената има и едно против.

В случая на компилация те са;

  • Необходимото време за това (Firefox с i7 4790K (без овърклок, тъй като съм много зле с напрежения) отнема 3 минути, Gnome Shell (лентата нищо повече) с Gnome-Control-Center ми отне около 2 минути, като и двете бяха компилирани в по същото време във Fedora. Но на машина с по-малко мощен процесор този път може да бъде непропорционално дълъг).
  • Процесорът използва максимално 100% от мощността си с всичките си ядра, така че потреблението и топлината нарастват нагоре (вземете това предвид, ако имате овърклок или ако е особено преносим компютър), така че е удобно да приготвите партньор или кафе за случая.
  • Може би ви липсва библиотека (инструмент), която използва програма, така че да не греши при компилацията. По принцип всички дистрибуции имат пакети или набори от тях, за да се избегне това (те са пълни с различни библиотеки и други неща, които позволяват на ядрото да комуникира както трябва с процесора по време на процеса).

Как мога да компилирам?

За Debian (Ubuntu, Mint, Elementary и т.н.) всички те са производни на това, така че следвайте това

Тук говоря за компилиране на програма за нормална употреба, а не на ядро.

aptitude инсталиране на съществени dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor

Сложих debian-policy, но ако вашата дистрибуция не е Debian и ви дава грешка, че не съществува такъв пакет, просто го игнорирайте. Трябва да поясня, че отдавна не съм използвал тези системи, така че ако даден пакет вече не е в хранилищата, не правете проблем.

За Fedora:

sudo yum -y инсталиране на заглавки на ядрото
ядро-развитие
sudo yum groupinstall "Инструменти за разработка"
sudo yum groupinstall "Библиотеки за развитие"

Тук трябва да се извиня за тези, които използват Arch (не познавам добре дистрибуцията) и OpenSuse, тъй като не познавам тези дистрибуции или съответните пакети, за да извърша правилна компилация (и не съм потвърдил какво е в мрежата, така че не знам дали работят за тези двама).

Сега, след като имате всички необходими изисквания, трябва само да изтеглите изходния код на програмата, която искате да компилирате, в зависимост от разширението, което разархивирате с помощта на терминала (не се притеснявайте, ще ви оставя командите) и когато отидете в папката (винаги с терминала), правите същото по следния начин:

Ако имате възможност да се конфигурирате да избирате компонентите и други:

./configure

След това въвеждате:

make

И накрая, за да инсталирате програмата на вашия linux:

make install

Всичко това винаги с root (su във Fedora, sudo su в Ubuntu и неговите производни (Mint, Elementary Os и т.н.)

Команди за разархивиране с помощта на терминала (файлът се разархивира в папка, където се намира файлът):

.Tar файлове (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Опаковка | tar cvf file.tar / file / * Разопаковайте | tar xvf file.tar Вижте съдържанието | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (катран с gzip ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Опаковка и цип | tar czvf file.tar.gz / file / Разопаковайте и разархивирайте | tar xzvf file.tar.gz Преглед на съдържанието (не е извлечено) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Компресиране | gzip -q файл (Файлът го компресира и преименува на "file.gz") Разархивирайте | gzip -d file.gz (Файлът го разархивира и оставя като "файл" Забележка: gzip компресира само файлове, но не и директории
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Компресиране | bzip2 файл | bunzip2 файл (Файлът го компресира и преименува на "file.bz2") Разархивирайте | bzip2 -d файл.bz2 | bunzip2 file.bz2 (Файлът го разархивира и оставя като „файл“) Забележка: bzip2 компресира само файлове, но не и директории
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (катран с bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Компресиране | tar -c файлове | bzip2> file.tar.bz2 Разархивирайте | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (последните версии на tar) Преглед на съдържанието | bzip2 -dc file.tar.bz2 | катран -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Компресиране | zip file.zip / mayo / archives Разархивирайте | unzip file.zip Вижте съдържанието | разархивирайте -v файл.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Компресиране | rar -a file.rar / май / архиви Разархивирайте | rar -x file.rar Вижте съдържанието | rar -v файл.rar | rar -l файл.rar

И това е всичко. Поздрави от Буенос Айрес, Аржентина. Весели празници и Нова година! :).


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