Programiranje na Linuxu, deo 1
Izaberite željenu stranu:
S obzirom da je Linux kernel nastao kao projekat na fakultetu računarskih nauka, a pritom je pisan tako da imitira funkcionalnost operativnog sistema Unix koji je takođe pravljen za inženjere od strane inženjera, ne čudi da je programiranje na Linuxu kao „dobar dan“, odnosno da gotovo sve aktuelne Linux distribucije dolaze sa manjom ili većom podrškom za razvoj softvera odmah po instalaciji. Pozabavimo se ovom tematikom malo detaljnije i pogledajmo šta sve programerima stoji na raspolaganju ako ih interesuje Linux kao platforma.
Ivan Todorović
Programiranje na Linuxu, deo 1
Ukoliko se bojite da nastavite sa čitanjem - nemojte. Za razumevanje ovog teksta poželjno je da imate nekakvo predznanje iz programiranja i da znate kako da napišete i prevedete program na Windowsu, za šta je dovoljno i znanje koje se stiče u srednjoj školi. Pre nego što krenemo sa bilo kakvom pričom o programiranju na Linuxu, od velikog je značaja upoznati se sa pojmom GCC. Kada je Ričard Stolman pre skoro trideset godina inicirao razvoj Unixolikog operativnog sistema GNU (koji, o ironije, ni dan danas nije završen), znao je da jako bitno da postoji funkcionalan C kompajler ako misli da taj operativni sistem zaživi sa stanovištva softverske podrške. Otud i skraćenica GCC, koja je prvobitno značila GNU C Compiler.
Tokom godina, podrška se širila i na ostale jezike, pa sada GCC zvanično uključuje C, C++, Objective-C, Objective-C++, Javu, Fortran, Adu i Googleov Go, uz malo manje zvaničnu podršku za Paskal, Modula-2, Modula-3 i nekolicinu manje popularnih jezika. GCC sada zvanično znači GNU Compiler Collection, iako komanda „gcc“ na podržanim operativnim sistemima i dalje podrazumevano poziva C kompajler.

Kada je Stolman saznao za Linux kernel i nakon što se pojavila prva distribucija sastavljena od Linux kernela i GNU alata (otud i naziv GNU/Linux koji se često sreće), GCC je postao podrazumevani set kompajlera na ovoj platformi. Ipak, GCC nije puka kolekcija kompajlera, već nudi i odgovarajuće programske biblioteke na koje se oslanjaju programi pisani u određenim jezicima. Recimo, da biste u jeziku C mogli da koristite dinamičku alokaciju i dealokaciju memorije, potrebno je da postoji odgovarajuća C biblioteka koja nudi potrebne funkcije i sve pozadinske mehanizme koji će to obezbediti.
GCC nudi mogućnost kreiranja izvršnih fajlova koji su statički ili dinamički linkovani. Prva opcija znači da će rezultujući izvršni fajl sadržati sve potrebne biblioteke u sebi, dok druga varijanta podrazumeva se program oslanja na deljene sistemske biblioteke (na primer, DLL fajlovi na Windowsu). Isto tako, kao deo GNU projekta postoji i GNU Classpath, open-source implementacija Java biblioteke na koju se oslanjaju programi napisani u GCC Javi.

Osim podrške za razne programske jezike, izuzetno je važno što GCC podržava ogroman broj hardverskih arhitektura na koje je portovan i čije izvršne fajlove može da proizvede. Tako osim programa koji će se vrteti na uobičajenom x86 i x86-64 Linuxu, pomoću GCC-a možete proizvesti izvršne fajlove za mnoge arhitekture počevši od poznatih ARM i PowerPC računara, pa sve do teške egzotike koju verovatno nikada nećete videti uživo ili se odavno ne proizvodi.
S obzirom da GCC predstavlja softver otvorenog kôda i može se besplatno koristiti na mnogim operativnim sistemima (uključujući nebrojene Linux portove za razne hardverske arhitekture), izuzetno je popularan kao deo „toolchaina“ za razvoj softvera u embedded vodama, odnosno u izradi računara usko specifične namene (od video plejera koji se ugrađuju u televizore pa do telefona koji koriste operativni sistem Android, a koji se takođe kompajlira pomoću GCC-ovog C i C++ kompajlera).

Kada GCC ne bi nudio ovakvu atraktivnu kombinaciju cene od nula dolara i izuzetne podrške za ogroman broj hardverskih arhitektura, razvoj ne-PC uređaja bio bi i skuplji i dugotrajniji, jer firme koje proizvode sopstvene komercijalne toolchainove nisu tako hitre u ispravci bagova i nadogradnji svojih proizvoda, dok se GCC baš zbog toga što ga održava open-source zajednica vinuo u nebesa i sada predstavlja jedno od najkvalitetnijih rešenja na tržištu. Naravno, open-source zajednicu ne čine hobisti koji nemaju druga posla u životu, već se mahom radi o profesionalcima koji već rade za velike kompanije ili ih iste sponzorišu jer u unapređenju GCC-a vide sopstveni interes. Svejedno, zbog toga se GCC tretira kao opšte dobro i zbog toga ima izuzetan „nevidljivi“ uticaj kako na savremeno računarstvo, tako i na „pridružene“ grane poput sveta prenosnih i mobilnih uređaja, pa čak i potrošačke elektronike.














