U ovom malom vodiču objasnit ću (i naučiti vas) zašto je bolje da sastavite program (recimo Firefox, Vlc, itd.) Iz njegovog izvornog koda, nego da ga preuzmete (iz The Software Center, Yumex, Pacman itd.) ) i instalirajte.
Prvo idemo s teorijom:
Šta je "kompajliranje"?
Kompajliranje je pretvaranje izvornog koda (koda napisanog na određenom programskom jeziku, recimo C, C ++, itd.) U izvršni program za svoj rad pomoću procesora za pretvaranje jezika koji se koristi za generiranje koda u binarni i asembler. Često se naziva i ambalažom.
Zašto je bolje "kompajlirati"?
Prvo morate znati sljedeće da biste razumjeli zašto. Rečeno na „sirov“ način (jednostavan, ne baš profesionalan, itd.), Svaka rasa (Pentium, Core, Atom, itd.) I njene vrste (Intel, AMD, ARM, itd.) Procesora imaju upute (softver napisan u asembleru koji obrađuju kod) svog modela (Core i7, Core i5, Atom x2, Phantom x8, Arm, itd.), a imaju i opće upute koje imaju sve te vrste.
Kada preuzmete program iz repozitorija putem Softverskog centra (npr. apt-get/Yumex/Yum/Pacman/itd.), on se automatski instalira i kaže se da je prekompiliran za pokretanje na svim mogućim procesorima (Intel i AMD). Budući da je to prekompilirani program, gubi instrukcije specifične za taj određeni model procesora (zamislite da program poput Firefoxa ili Chromea, koji imaju preko 7 ili 8 miliona linija koda, mora uključiti sve specifične instrukcije za svaki procesor na tržištu; količina koda bi bila toliko velika da program više ne bi bio efikasan), zadržavajući samo opće instrukcije svog kreatora (Intel, AMD, ARM).
Kada sami preuzmete, dekomprimirate i kompajlirate izvorni kod programa, on se kompajlira sa specifičnim instrukcijama VAŠEG procesora ( što ne znači da neće raditi na mašini sa drugačijim procesorom, već samo da će biti optimizovan posebno i isključivo za vaš procesor) , čime se oslobađa sva snaga koju vaš procesor može pružiti zahvaljujući svojim specifičnim instrukcijama.
U tehničkim detaljima, ove specifične upute usko su povezane s onim što je poznato kao čipset vaše matične ploče, što je velika glavobolja za one koji imamo Intel kada želimo nadograditi procesor i matičnu ploču.
Iznenadili biste se snagom koju vaš stari računar sa AMD Atom x2 ili Intel Core i3 , Core 2 Duo ili nekim drugim procesorom može pružiti . Sada razumijete zašto se o kompajliranju poznatog kernela (srca svakog operativnog sistema) toliko priča u Linux svijetu? Zamislite da možete kompajlirati cijeli sistem posebno za vaš računar (grafičko okruženje (GNOME, KDE, itd.), kernel, često korišteni programi (Firefox, VLC, Chrome, Wine, itd.)) - nivo brzine i optimizacije koji biste dobili.
Ovaj princip kompilacije za dobivanje koda koji je optimiziran posebno za vašu mašinu je onaj koji koriste distro-i poput Gentoo-a i derivata (o čemu neću sada govoriti, koristim Fedoru minimalno sa kompilacijom Gnome 3, kernela i drugih programa) gdje se sistem, vaša ažuriranja i vaši programi uvijek prevode.
Protiv sastavljanja:
Već sam objasnio sve prednosti, ali kao i sve u svemiru ima i jednu protiv.
U slučaju kompilacije jesu;
- Potrebno vrijeme za ovo (Firefoxu s i7 4790K (bez overkloka jer sam jako loš s naponom) traje 3 minute, Gnome Shell-u (traka više ništa) s Gnome-Control-Center-om trebalo je oko 2 minute, oba su sastavljena u u isto vrijeme u Fedori. Ali na mašini s manje moćnim procesorom ovaj put može biti nesrazmjerno dugo).
- Procesor maksimalno koristi 100% snage sa svim svojim jezgrama, tako da potrošnja i toplina naglo rastu (uzmite to u obzir ako imate overclocking ili je to posebno prijenosno računalo), pa je prikladno pripremiti mate ili kavu za tu priliku.
- Možda vam nedostaje biblioteka (alat) koja koristi program tako da ne pogreši u kompilaciji. Općenito, svi distro-i imaju svoje pakete ili skupove kako bi to izbjegli (oni su prepuni raznih biblioteka i drugih stvari koje omogućavaju kernelu da komunicira kako treba s procesorom tokom procesa).
Kako mogu kompajlirati?
Ovdje govorim o kompajliranju programa za normalnu upotrebu, a ne kernela.
aptitude instalirati bitne dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor
Stavio sam debian-policy, ali ako vaš distro nije Debian i ako vam se pojavi greška da ne postoji takav paket, jednostavno ga zanemarite. Moram pojasniti da dugo nisam koristio ove sisteme, pa ako paket više nije u spremištima, nemojte praviti problem.
Za Fedoru:
sudo yum -y instaliraj zaglavlja jezgrakernel-razvojsudo yum groupinstall "Alati za razvoj"sudo yum groupinstall "Razvojne biblioteke"
Ovdje se moram ispričati za one koji koriste Arch (ne poznajem dobro distro) i OpenSuse, jer ne znam ove distro niti odgovarajuće pakete da bih izveo ispravnu kompilaciju (i nisam potkrijepio ono što je na mreži, pa da za to dvoje ne znam rade li).
Sad kad imate sve potrebne zahtjeve, trebate samo preuzeti izvorni kod programa koji želite kompajlirati, ovisno o ekstenziji koju otpakujete pomoću terminala (ne brinite, ostavit ću vam naredbe) i kada idete u mapu (uvijek s terminalom) radite isto sljedeće:
Ako imate mogućnost da se konfigurirate za odabir komponenata i ostalih:
./configure
Zatim ukucate:
make
I na kraju da instalirate program na vaš linux:
make install
Naredbe za raspakiranje pomoću terminala (datoteka se raspakuje u fascikli u kojoj se datoteka nalazi):
.Tar datoteke (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakiranje | tar cvf file.tar / file / * Raspakirajte | tar xvf file.tar Pogledaj sadržaj | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (katran sa gzipom ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakiranje i patentni zatvarač | tar czvf file.tar.gz / file / Raspakirajte i raspakujte | tar xzvf file.tar.gz Pogledaj sadržaj (nije izvučen) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compress | gzip -q datoteka (datoteka se komprimuje i preimenuje u "file.gz") Raspakirajte | gzip -d file.gz (Datoteka ga raspakuje i ostavlja kao "datoteku"). Napomena: gzip komprimira samo datoteke, a ne direktorije
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compress | bzip2 datoteka | datoteka bunzip2 (datoteka se komprimuje i preimenuje u "file.bz2") Raspakirajte | bzip2 -d file.bz2 | bunzip2 file.bz2 (Datoteka ga raspakuje i ostavlja kao "datoteku") Napomena: bzip2 komprimira samo datoteke, a ne direktorije
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (katran sa bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compress | tar -c datoteke | bzip2> file.tar.bz2 Raspakirajte | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (najnovije verzije tar-a) Prikaz sadržaja | bzip2 -dc file.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compress | zip file.zip / mayo / archives Raspakirajte | unzip file.zip Pogledaj sadržaj | unzip -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compress | rar -a file.rar / svibanj / arhiva Raspakirajte | rar -x file.rar Pogledaj sadržaj | rar -v file.rar | rar -l file.rar
I to je sve. Pozdrav iz Buenos Airesa, Argentina. Srećni praznici i Nova godina! :)