Ne znam sto zezate coveka u fazonu RTFM ja se secam sta najcesce pise u tim README glupostima
Code:
…bla bla truc moj program radi ovo i ovo…
…instalacija:
./configure
make
make install
uzivajte…
i dovidjenja. Secam se mojih muka oko kompajliranja prvog pograma, a cak mi nije ni trebao nego sam hteo da vidim mogu li se snaci i poprilicno sam se namucio.
U principu kompajliranje iz sorsa je dobar nacin za odvikavanje od duducenja i doubleclick>next>next>yes sistema koji nas uce od kako sednemo za racunar. Licno nisam imao potrebu da nesto kompajliram zarad najnovije verzije nekog programa jer za 99% stvari postoji odgovarajuci PPA (Personal Package Archives), ali jesam imao problema sa GCstar programom jer nije hteo da se instalira posto nije zadovoljavao sve dependecies (zavisnosti za instalaciju, tj. potrebne pakete da bi radio) iako je u riznicama postojao paket koji mu je bio neophodan za instalaciju (po pravilu bi Synaptic, SM, GDebi installer trebao da povuku sve zavisnosti), ali nije ga dodao, sto sam javio autoru programa, a da li je ispravio to ne znam. Ovo moje davljenje zapravo ima razlog, a to je da razumes sistem kompajliranja. Znaci da bi neki program mogao da kompajliras, najpre su ti potrebni alati za kompajliranje, jer source u tar.gz arhivi koji si skinuo nije sam po sebi dovoljan, nesto mora da ga spakuje u razumljiv format (izvrsni). Paket koji instalira sve potrebne alate i biblioteke se zove build-essential i instalira se kroz neki menadzer aplikacija (Software Manager, Synaptic…) ili kroz terminal:
sudo apt install build-essential
i koji ce dodati na racunar sledece (ne nuzno sve, zavisi od sistema i toga sta je vec instalirano):
g++ gcc libc6-dev libc6.1-dev libc0.3-dev libc-dev make dpkg-dev hurd-dev
su zavisnosti za build-essential i ako nisu instalirani onda se i oni instaliraju, a sledeci
base-files base-passwd bash bsdutils coreutils dash debianutils diffutils dpkg e2fsprogs findutils grep gzip hostname login mount ncurses-base ncurses-bin perl-base python-minimal sed tar util-linux
su paketi koje build-esential instalira. Ponekad problem moze praviti nedostatak libpng12-dev pa ga treba dodati ukoliko nije instaliran:
sudo apt install libpng12-dev
Sad mozes da pristupis samom kompajliranju. Skinutu arhivu u tar.gz ili tar.bz2 formatu raspakujes na neko mesto koje zelis, obicno je to Home folder
tar zxf program.tar.gz
ili jednostavnije kopra se arhiva u zeljeni folder i desni klik pa Extract Here (ne mora bas sve da se kuca u terminal, majka mu stara). Zatim udjes u folder gde si raspakovao arhivu:
cd /putanja/do/program
ili desni klik pa Open in Terminal preko Nautilus fajl managera, ako si u Gnome okruzenju i dalje te mrzi da kucac kroz Terminal (nek neko napise kako je u KDE).
Sada se nalazis u folderu gde je source programa. E, sad mora Terminal, nocna mora linux pocetnika.
Prva komanda pravi konfiguracioni fajl koji sluzi kao “putokaz” kompajleru kako da pretvori sam kod u izvrsni oblik:
./configure
koji proverava da li su zadovoljene sve zavisnosti koje program zahteva za instalaciju i da li postoje svii kompajleri koji ce odraditi kompajliranje i napravi makefile u folderu gde se nalazis. Sada krece kompajliranje:
make
i program je iskompajliran (posle nekog vremena, zavisi od samog programa i snage CPU). Sada ga treba instalirati, sto zapravo znaci da sve delove programa koji su iskompajlirani treba proslediti (kopirati) u odredjene foldere tipa /bin, /usr, /lib i slicno, a posto obican user nema pravo pisanja po tim folderima kucamo:
sudo make install
Znaci, za svaki deo programa u makefile postoji target install, sto znaci da se ovom komandom kao sto sam rekao svi delovi programa smestaju u sistemske foldere koji su za to predvidjeni. Ovim bi instalacija programa bila gotova.
Varijanta 2
Druga varijanta koja se ne vidja cesto je da u folderu gde se raspakuje tag.gz arhiva postoji jedna zgodna setup.py skripta koja odradi sve ovo, naravno potrebno je imati instaliran python =>2.2 sto se na MIntu i Ubuntu podrazumeva, za ostale ne znam, verovatno da. U tom slucaju instalacija je sledeca:
sudo python setup.py install
s tom razlikom da se binarni paketi u ovom slucaju instaliraju u sam folder u kom se source nalazi, sto znaci da aplikacija istalirana na ovaj nacin ne zavisi od sistema na kome se nalazi vec se moze nositi npr. na USB i pokretati u bilo kom linux okruzenju. Za integraciju aplikacije u Gnome okruzenje kompajlirane na ovaj nacin sam pisao
ovde.
Nadam se da sam malo pojasnio kako se program kompajlira iz sorsa, pa nek ti je sa srecom kompajliranje!