W tym małym przewodniku wyjaśnię (i nauczę), dlaczego lepiej jest skompilować program (powiedzmy Firefox, Vlc itp.) Z jego kodu źródłowego, niż go pobrać (z The Software Center, Yumex, Pacman itp. ) i zainstaluj.
Najpierw przejdźmy do teorii:
Co to jest „kompilacja”?
Kompilacja polega na przekształceniu kodu źródłowego (kodu napisanego w określonym języku programowania, powiedzmy C, C ++, itp.) W program wykonywalny w celu jego działania poprzez użycie procesora do konwersji języka używanego do wygenerowania kodu na binarny i asembler. Często nazywa się to również opakowaniem.
Dlaczego lepiej jest „kompilować”?
Najpierw musisz wiedzieć, co następuje, aby zrozumieć dlaczego. Mówiąc w „prymitywny” sposób (prosty, niezbyt profesjonalny itp.), Każda rasa (Pentium, Core, Atom itp.) I jej gatunek (Intel, AMD, ARM itp.) Procesora mają instrukcje (oprogramowanie napisane w asemblerze który przetwarza kod) swojego modelu (Core i7, Core i5, Atom x2, Phantom x8, Arm itp.), a także mają ogólne instrukcje, które mają wszystkie ich rodzaje.
Po pobraniu programu z repozytoriów za pośrednictwem Centrum Oprogramowania (np. apt-get/Yumex/Yum/Pacman/itp.) jest on automatycznie instalowany i określany jako prekompilowany do działania na wszystkich możliwych procesorach (Intel i AMD). Ponieważ jest to program prekompilowany, traci on instrukcje specyficzne dla danego modelu procesora (wyobraźmy sobie, że program taki jak Firefox czy Chrome, który ma ponad 7 lub 8 milionów linii kodu, musiałby zawierać wszystkie instrukcje specyficzne dla każdego procesora dostępnego na rynku; ilość kodu byłaby tak duża, że program przestałby być wydajny), zachowując jedynie ogólne instrukcje jego twórcy (Intel, AMD, ARM).
Kiedy samodzielnie pobierzesz, rozpakujesz i skompilujesz kod źródłowy programu, zostanie on skompilowany zgodnie ze szczegółowymi instrukcjami TWOJEGO procesora ( co nie oznacza, że nie będzie działać na komputerze z innym procesorem, a jedynie, że zostanie zoptymalizowany specjalnie i wyłącznie pod kątem Twojego procesora) , uwalniając w ten sposób całą moc, jaką Twój procesor jest w stanie dać dzięki swoim szczegółowym instrukcjom.
Jeśli chodzi o szczegóły techniczne, te szczegółowe instrukcje są ściśle powiązane z tak zwanym chipsetem płyty głównej, co jest wielkim bólem głowy dla tych z nas, którzy mają Intel, gdy chcemy ulepszyć procesor i płytę główną.
Zdziwiłbyś się, jaką moc może zapewnić Twój stary komputer z procesorem AMD Atom x2 , Intel Core i3 , Core 2 Duo lub innym . Teraz rozumiesz, dlaczego kompilacja słynnego jądra (serca każdego systemu operacyjnego) jest tak popularna w świecie Linuksa? Wyobraź sobie, że mógłbyś skompilować cały system specjalnie dla swojego komputera (środowisko graficzne (GNOME, KDE itp.), jądro, powszechnie używane programy (Firefox, VLC, Chrome, Wine itp.)) – jaki poziom szybkości i optymalizacji byś uzyskał.
Ta zasada kompilacji w celu uzyskania kodu zoptymalizowanego specjalnie dla twojego komputera jest używana przez dystrybucje, takie jak Gentoo i pochodne (o czym nie będę teraz mówić, używam Fedory minimal do kompilacji Gnome 3, jądra i innych programów) gdzie system, aktualizacje i programy są zawsze kompilowane.
Wady kompilacji:
Wyjaśniłem już wszystkie zalety, ale jak wszystko we wszechświecie ma jednego przeciw.
W przypadku kompilacji są;
- Czas potrzebny na to (Firefox z i7 4790K (bez overclockingu, ponieważ jestem bardzo zły z napięciami) zajmuje 3 minuty, Gnome Shell (pasek nic więcej) z Gnome-Control-Center zajęło mi około 2 minut, oba kompilowane na w tym samym czasie w Fedorze. Ale na komputerze z mniej wydajnym procesorem ten czas może być nieproporcjonalnie długi).
- Procesor zużywa 100% swojej mocy ze wszystkimi rdzeniami na maksimum, więc zużycie i ciepło gwałtownie rosną (weź to pod uwagę, jeśli masz overclocking lub jeśli jest to szczególnie notebook), więc wygodnie jest przygotować sobie kumpla lub kawę z okazji.
- Być może brakuje Ci biblioteki (narzędzia), która używa programu, aby nie popełniać błędów w kompilacji. Ogólnie rzecz biorąc, wszystkie dystrybucje mają pakiety lub zestawy, aby tego uniknąć (są dostarczane z różnymi bibliotekami i innymi rzeczami, które pozwalają jądru prawidłowo komunikować się z procesorem podczas procesu).
Jak mogę skompilować?
Mówię tutaj o kompilowaniu programu do normalnego użytku, a nie jądra.
aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor
Umieściłem debian-policy, ale jeśli twoja dystrybucja nie jest Debianem i wyświetla błąd, że taki pakiet nie istnieje, po prostu zignoruj go. Muszę wyjaśnić, że dawno nie korzystałem z tych systemów, więc jeśli paczki nie ma już w repozytoriach, nie rób problemu.
W przypadku Fedory:
sudo yum -y zainstaluj nagłówki jądraprogramowanie jądrasudo yum groupinstall „Narzędzia programistyczne”sudo yum groupinstall „Biblioteki programistyczne”
Tutaj muszę przeprosić tych, którzy używają Arch (nie znam dobrze dystrybucji) i OpenSuse, ponieważ nie znam tych dystrybucji ani odpowiednich pakietów, aby wykonać poprawną kompilację (i nie potwierdziłem, co jest w sieci, więc Nie wiem, czy pracują dla tych dwóch).
Teraz, gdy masz wszystkie niezbędne wymagania, wystarczy pobrać kod źródłowy programu, który chcesz skompilować, zgodnie z rozszerzeniem, które rozpakujesz za pomocą terminala (nie martw się, zostawię ci polecenia) i przechodząc do folderu (zawsze z terminalem), robisz to samo:
Jeśli masz możliwość skonfigurowania się, aby wybrać komponenty i inne:
./configure
Następnie wpisujesz:
make
I wreszcie, aby zainstalować program na swoim Linuksie:
make install
Polecenia do rozpakowania za pomocą terminala (plik jest rozpakowywany w folderze, w którym znajduje się plik):
.Pliki tar (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - tar cvf plik.tar / plik / * Rozpakuj | tar xvf file.tar Wyświetl zawartość | tar tvf plik.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar z gzip ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakowanie i rozpinanie | tar czvf plik.tar.gz / plik / Rozpakuj i rozpakuj | tar xzvf file.tar.gz Wyświetl zawartość (niewyodrębniona) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ścisk | gzip -q plik (plik jest kompresowany i zmienia jego nazwę na „plik.gz”) Rozpakuj | gzip -d plik.gz (plik rozpakowuje go i pozostawia jako "plik" Uwaga: gzip kompresuje tylko pliki, nie katalogi
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -. bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ścisk | plik bzip2 | plik bunzip2 (plik jest kompresowany i zmienia jego nazwę na „plik.bz2”) Rozpakuj | bzip2 -d plik.bz2 | bunzip2 plik.bz2 (plik rozpakowuje go i pozostawia jako „plik”) Uwaga: bzip2 kompresuje tylko pliki, a nie katalogi
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (smoła z bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Kompresy | pliki tar -c | bzip2> file.tar.bz2 Rozpakuj | bzip2 -dc plik.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (najnowsze wersje tar) Wyświetl zawartość | bzip2 -dc plik.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -. zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ścisk | zip plik.zip / mayo / archives Rozpakuj | unzip file.zip Wyświetl zawartość | unzip -v plik.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -. rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ścisk | rar -a plik.rar / may / archives Rozpakuj | rar -x file.rar Wyświetl zawartość | rar -v plik.rar | rar -l plik.rar
I to wszystko. Pozdrowienia z Buenos Aires w Argentynie. Wesołych Świąt i Nowego Roku! :).