Selles väikeses juhendis selgitan (ja õpetan teile), miks on parem, kui koostate programmi (näiteks Firefox, Vlc jne) selle lähtekoodist, kui alla laadite (tarkvarakeskusest, Yumexist, Pacmanist jne). ) ja installige.
Kõigepealt läheme teooria juurde:
Mis on "kompileerimine"?
Kompileerimine on lähtekoodi (teatud programmeerimiskeeles kirjutatud kood, näiteks C, C ++ jne) muutmine selle toimimiseks käivitatavaks programmiks protsessori abil koodi teisendamiseks kasutatava keele teisendamiseks binaarseks ja monteerija. Sageli nimetatakse seda ka pakendiks.
Miks on parem "kompileerida"?
Kõigepealt peate teadma järgmist, et mõista, miks. "Toorelt" öeldud (lihtne, mitte eriti professionaalne jne), igal protsessori võistlusel (Pentium, Core, Atom jne) ja nende liikidel (Intel, AMD, ARM jne) on juhised (assembleris kirjutatud tarkvara) mis töötleb koodi) nende mudelist (Core i7, Core i5, Atom x2, Phantom x8, Arm jne) ning neil on ka üldised juhised, mis kõigil omataolistel on.
Kui laadite programmi repositooriumidest tarkvarakeskuse kaudu alla (nt apt-get/Yumex/Yum/Pacman/etc), installitakse see automaatselt ja öeldakse, et see on eelkompileeritud töötama kõigil võimalikel protsessoritel (Intel ja AMD). Kuna tegemist on eelkompileeritud programmiga, kaotab see sellele konkreetsele protsessorimudelile omased juhised (kujutage ette, et programm nagu Firefox või Chrome, millel on üle 7 või 8 miljoni koodirea, peaks sisaldama kõiki turul olevate protsessorite spetsiifilisi juhiseid; koodimaht oleks nii suur, et programm ei oleks enam efektiivne), säilitades ainult selle looja üldised juhised (Intel, AMD, ARM).
Kui sa ise programmi lähtekoodi alla laadid, lahti pakid ja kompileerid, kompileeritakse see SINU protsessori spetsiifiliste juhiste järgi ( mis ei tähenda, et see ei töötaks teise protsessoriga masinas, vaid ainult seda, et see optimeeritakse spetsiaalselt ja ainult sinu protsessori jaoks) , vabastades seeläbi kogu võimsuse, mida sinu protsessor tänu oma spetsiifilistele juhistele pakkuda suudab.
Tehnilisemates üksikasjades on need konkreetsed juhised tihedalt seotud teie emaplaadi kiibistikuga, mis on suur peavalu neile meist, kellel on Intel, kui tahame protsessorit ja emaplaati uuendada.
Sa oleksid üllatunud, kui võimsad on sinu vana arvuti AMD Atom x2 või Intel Core i3 , Core 2 Duo või muud protsessorid . Nüüd sa mõistad, miks kuulsa kerneli (iga operatsioonisüsteemi südame) kompileerimine Linuxi maailmas nii palju kõneainet pakub? Kujuta ette, kui saaksid kompileerida terve süsteemi spetsiaalselt oma arvuti jaoks (graafiline keskkond (GNOME, KDE jne), kernel, tavaliselt kasutatavad programmid (Firefox, VLC, Chrome, Wine jne)) – millise kiiruse ja optimeerituse sa saavutaksid.
Seda kompileerimispõhimõtet spetsiaalselt teie masinale optimeeritud koodi saamiseks on sellised distrod nagu Gentoo ja derivaadid (millest ma praegu ei räägi, Gnome 3, kerneli ja muude programmide kompileerimisel kasutan Fedora minimalit) kus süsteem, teie värskendused ja programmid alati kompileeritakse.
Kompileerimise miinused:
Ma selgitasin juba kõiki eeliseid, kuid nagu kõigel universumis, on ka sellel üks vastu.
Koostamise puhul need on;
- Selleks kuluv aeg (Firefox i7 4790K-ga (ilma ülekuumenemiseta, kuna mul on pingetega väga kehv) võtab 3 minutit, Gnome Shell (riba pole midagi muud) Gnome-Control-Centeriga võttis mul aega umbes 2 minutit, mõlemad kompileeriti aadressil samal ajal Fedoras. Kuid vähem võimsama protsessoriga masinas võib see aeg olla ebaproportsionaalselt pikk).
- Protsessor kasutab maksimaalselt 100% kogu võimsusest koos kõigi südamikega, nii et tarbimine ja soojus tõusevad taevasse (võtke seda arvesse, kui teil on ülekiirendamist või kui see on eriti sülearvuti), nii et on mugav, kui valmistate kaaslast või kohvi selleks puhuks.
- Võib-olla on teil puudu raamatukogu (tööriist), mis kasutab programmi nii, et see kompileerimisel ei eksiks. Üldiselt on kõigil distrodel selle vältimiseks paketid või komplektid (need on täis erinevaid teeke ja muid asju, mis võimaldavad kernelil protsessori ajal protsessoriga suhelda nii nagu peaks.
Kuidas ma saan koostada?
Siinkohal räägin tavakasutuseks programmi, mitte tuuma koostamisest.
aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor
Ma panin debiani-policy, kuid kui teie distro pole Debian ja see annab teile vea, et sellist paketti pole, siis lihtsalt ignoreerige seda. Pean selgitama, et ma pole neid süsteeme pikka aega kasutanud, nii et kui paketti pole enam hoidlates, siis ärge tehke probleemi.
Fedora jaoks:
sudo yum -y installida kernel-päisedkerneli arendussudo yum groupinstall "Arendustööriistad"sudo yum groupinstall "Arendusraamatukogud"
Siinkohal pean vabandama nende ees, kes kasutavad Archi (ma ei tunne distroot hästi) ja OpenSuse'i, kuna ma ei tea neid distrosid ega vastavaid pakette korrektse kompileerimise tegemiseks (ja ma pole kinnitanud, mis võrgus on, nii et nende kahe jaoks ei tea, kas nad töötavad).
Nüüd, kui teil on kõik vajalikud nõuded, peate alla laadima ainult selle programmi lähtekoodi, mille soovite kompileerida, sõltuvalt laiendist, mille te selle terminali abil lahti pakkite (ärge muretsege, ma jätan teile käsud) ja kui lähete kausta (alati koos terminaliga), teete sama:
Kui teil on võimalus seadistada komponente ja teisi valima:
./configure
Siis tippite:
make
Ja lõpuks installige programm oma Linuxi:
make install
Käsud terminali abil lahti pakkimiseks (fail pakitakse lahti kaustas, kus fail asub):
.Tarfailid (tõrv) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakend | tar cvf file.tar / file / * Paki lahti | tar xvf file.tar Kuva sisu | tõrva tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tõrv gzipiga ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakend ja tõmblukk | tar czvf file.tar.gz / file / Paki lahti ja paki lahti | tar xzvf file.tar.gz Sisu kuvamine (väljavõtmata) | tar tzvf fail.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suruma | gzip -q fail (fail tihendab ja nimetab selle ümber "file.gz") Paki lahti | gzip -d file.gz (Fail pakib selle lahti ja jätab selle "failiks". Märkus: gzip tihendab ainult faile, mitte katalooge
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suruma | bzip2 fail | bunzip2 fail (fail tihendab ja nimetab selle ümber "file.bz2") Paki lahti | bzip2 -d fail.bz2 | bunzip2 file.bz2 (fail pakib selle lahti ja jätab selle failiks) Märkus: bzip2 tihendab ainult faile, mitte katalooge
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tõrv bzip2-ga) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suruma | tar -c failid | bzip2> file.tar.bz2 Paki lahti | bzip2 -dc fail.tar.bz2 | tõrv -xv | tar jvxf file.tar.bz2 (tõrva viimased versioonid) Kuva sisu | bzip2 -dc fail.tar.bz2 | tõrva-tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -. zip (tõmblukk) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suruma | zip file.zip / mayo / archives Paki lahti | unzip file.zip Sisu kuvamine | pakkige lahti -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suruma | rar -a file.rar / may / archives Paki lahti | rar -x file.rar Sisu kuvamine | rar -v fail.rar | rar -l fail.rar
Ja see on ka kõik. Tervitused Buenos Airesest Argentiinast. Ilusat pühadeaega ja uut aastat! :).