I den här lilla guiden ska jag förklara (och lära dig) varför det är bättre att kompilera ett program (säg Firefox, Vlc, etc) från dess källkod än att ladda ner det (från The Software Center, Yumex, Pacman, etc) och installera.
Låt oss börja med teorin:
Vad är "kompilera"?
Att kompilera är att omvandla källkoden (koden skriven i ett visst programmeringsspråk, säg C, C++, etc) till ett körbart program för dess funktion genom att använda processorn för konvertering av språket som används för att generera koden till binär och assembler ... Det kallas också ofta för förpackning.
Varför är det bättre att "kompilera"?
Först måste du veta följande för att förstå varför. Sagt på ett "grovt" sätt (enkelt, inte särskilt professionellt, etc.), varje ras (Pentium, Core, Atom, etc.) och dess typ (Intel, AMD, ARM, etc.) av processor har instruktioner (skriven programvara i assembler som bearbetar koden) för sin modell (Core i7, Core i5, Atom x2, Phantom x8, Arm, etc) och har även allmänna instruktioner som alla av dess slag har.
När du laddar ner ett program från arkiven via Programvarucentret (t.ex. apt-get/Yumex/Yum/Pacman/etc.) installeras det automatiskt och sägs vara förkompilerat för att köras på alla möjliga processorer (Intel och AMD). Eftersom det är ett förkompilerat program förlorar det instruktionerna som är specifika för den specifika processormodellen (tänk dig om ett program som Firefox eller Chrome, som har över 7 eller 8 miljoner rader kod, var tvunget att inkludera alla specifika instruktioner för varje processor på marknaden; mängden kod skulle vara så stor att programmet inte längre skulle vara effektivt), och behåller endast de allmänna instruktionerna från dess skapare (Intel, AMD, ARM).
När du själv laddar ner, dekomprimerar och kompilerar källkoden för ett program, kompileras det med specifika instruktioner från DIN processor ( vilket inte betyder att det inte fungerar på en maskin med en annan processor, bara att det kommer att optimeras specifikt och enbart för din processor) , vilket frigör all kraft som din processor kan ge tack vare sina specifika instruktioner.
I mer teknisk detalj är dessa specifika instruktioner nära knutna till vad som kallas ditt moderkortschipset, vilket är den stora huvudvärken för oss på Intel när vi vill uppgradera processorn och moderkortet.
Du skulle bli förvånad över kraften som din gamla dators AMD Atom x2 eller Intel Core i3 , Core 2 Duo eller annan processor kan leverera . Nu förstår du varför det är så mycket prat om att kompilera den berömda kärnan (hjärtat i varje operativsystem) i Linuxvärlden? Tänk dig om du kunde kompilera ett helt system specifikt för din dator (grafisk miljö (GNOME, KDE, etc.), kärna, vanliga program (Firefox, VLC, Chrome, Wine, etc.)) – vilken hastighet och optimering du skulle få.
Denna kompileringsprincip för att få en kod optimerad speciellt för din maskin är den som används av distros som Gentoo och derivator (som jag inte ska prata om nu, jag använder Fedora minimalt med kompilering av Gnome 3, kärnan och andra program) där systemet, dess uppdateringar och dess program alltid alltid kompileras.
Nackdelar med sammanställningen:
Jag har redan förklarat alla fördelar, men som allt i universum har det en baksida.
När det gäller byggnaden är de;
- Tid som behövs för detta (Firefox med en i7 4790K (utan överklockning eftersom jag är riktigt dålig på spänningar) tar 3 minuter, Gnome Shell (bara baren) med Gnome-Control-Center tar mig cirka 2 minuter, båda kompileras på samma tid på Fedora, men på en maskin med en mindre kraftfull processor kan denna tid öka orimligt).
- Processorn använder 100% av sin kraft med alla sina kärnor maximalt, så förbrukningen och värmen skjuter i höjden (ta hänsyn till detta om den är överklockad eller om det särskilt är en bärbar dator), så det är bekvämt att du förbereder en kompis eller en kaffe för tillfället.
- Du kanske saknar ett bibliotek (verktyg) som ett program använder så att det inte misslyckas i kompileringen. I allmänhet har alla distros paket eller uppsättningar av dem för att undvika detta (de kommer fulla av olika bibliotek och andra saker som gör att kärnan kan kommunicera korrekt med processorn under processen).
Hur kan jag kompilera?
Här pratar jag om att kompilera ett program för normal användning, inte en kärna.
aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor
Jag lägger debian-policy, men om din distro inte är Debian och du får ett felmeddelande om att det här paketet inte finns, ignorera det bara. Jag måste förtydliga att jag inte har använt dessa system på länge, så om ett paket inte längre finns i arkiven, oroa dig inte.
För Fedora:
sudo yum -y installera kernel-headerskernel-develsudo yum groupinstall "Utvecklingsverktyg"sudo yum groupinstall "Utvecklingsbibliotek"
Här måste jag be om ursäkt till de som använder Arch (jag känner inte till distron så bra) och OpenSuse, eftersom jag inte kan dessa distros eller respektive paket för att utföra en korrekt kompilering (och jag har inte verifierat vad som finns på nätet, så jag vet inte om de fungerar för dessa två).
Nu när du har alla nödvändiga krav behöver du bara ladda ner källkoden för programmet du vill kompilera, beroende på tillägget, packa upp det med terminalen (oroa dig inte, jag lämnar kommandona till dig) och när du går till mappen (alltid med terminalen) gör du följande:
Om du har möjlighet att konfigurera dig själv för att välja komponenter och andra:
./configure
Sedan skriver du:
make
Och slutligen för att installera programmet på din linux:
make install
Kommandon för att packa upp med terminalen (filen packas upp i en mapp där filen finns):
.tar-filer (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Paket | tar cvf file.tar /file/* Packa upp | tar xvf file.tar Visa innehåll | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tjära med gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packa och komprimera | tar csvf file.tar.gz /file/ Packa upp och packa upp | tar xzvf file.tar.gz Visa innehåll (utan att extrahera)| tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimera | gzip -q-fil (Filen är komprimerad och döpt om till "file.gz") Packa upp | gzip -d file.gz (Filen dekomprimerar den och lämnar den som "fil" Obs: gzip komprimerar bara filer, inte kataloger
- - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimera | bzip2-fil | bunzip2-fil (Filen komprimerar den och döper om den till "file.bz2") Packa upp | bzip2 -d file.bz2 | bunzip2 file.bz2 (Filen dekomprimerar den och lämnar den som "fil") Obs: bzip2 komprimerar bara filer, inte kataloger
- - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tjära med bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimera | tar -c filer | bzip2 > file.tar.bz2 Packa upp | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (senaste versioner av tar) Visa innehåll | bzip2 -dc file.tar.bz2 | tar-tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimera | zip file.zip /may/files Packa upp | packa upp file.zip Visa innehåll | packa upp -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimera | rar -a file.rar /may/files Packa upp | rar -x archive.rar Visa innehåll | rar -v file.rar | rar -l fil.rar
Och det är allt. Hälsningar från Buenos Aires, Argentina. Glad helg och nytt år! :).