1 KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka Ole Halonen GNU-ohjelmointityökalut Linux-järjestelmät 206101310 Seminaarityö 22.11.2012
2 Sisällysluettelo 2 1 Johdanto 3 2 GCC 3 3 Make 4 4 Makefile 4 5 GDB 5 6 GNU Emacs 5 7 GNU C Library 6 8 GNU Build system 7 9 GNU Binutils 8 10 Lähteet 9
3 Johdanto GCC GNU on vuonna 1983 syntynyt projekti, jonka alun perin käynnisti ohjelmoija Richard Stallman. Projektin tavoitteena on kehittää täysin vapaa käyttöjärjestelmä. GNU toimii vapaiden ohjelmistojen periaatteiden mukaan ja sen tavoitteena on kehittää täysin vapaa käyttöjärjestelmä. Projektia hallinnoi Free Software Foundation. GNU pyrkii tarjoamaan joukon erilaisia työkaluja ja alustan sovelluskehittäjille. GNU projektin tarpeisiin on luotu lisenssit kuten GNU General Public License (GPL), GNU Lesser General Public License (LGPL) ja GNU Free Documentation License (GFDL). GNU Compiler Collection (GCC) on GNU-projektin ohjelmointikielen kääntäjä, eräänlainen kääntäjien kokoelma. Richard Stallman aloitti GCC:n kehityksen ja se julkaistiin ensimmäisen kerran vuonna 1987. GCC perustuu Free Software Foundationin vapaisiin ohjelmistoihin. GCC on GNU:n kehitysympäristön tärkein osa ja vakiokääntäjänä useissa Unixin kaltaisissa käyttöympäristöissä. GCC on julkaistu GNU GPL ja osin LGPL lisenssien alaisuudessa. GCC on alustariippumaton ja siitä löytyy käännöstuki useille eri ohjelmointikielille. GCC osaa kääntää mm. C, C++, Javaa, Fortrania, Adaa, Objective-C, Objective C++ ja Go: ta.
4 Make Makefile GNU Make on työkalu, joka ohjaa lähdekooditiedostojen kääntämistä ajettaviksi tiedostoiksi. Ensimmäinen make työkalu julkaistiin vuonna 1977 Stuart Feldmanin toimesta. Make toimii GNU GPL-lisenssin alaisuudessa. Useimmiten lähdekoodihakemistossa make-käsky kääntää ohjelman ja make install asentaa sen. Kirjoittamalla komento make check voidaan tarkistaa tehty käännös. Komento make clean taas poistaa luodut tiedot (binäärit) lähdekoodihakemistosta. Make uninstall komento taas poistaa asennetut binäärit järjestelmästä. Makefile on tiedosto, jonka perusteella make kääntää ohjelman lähdekoodin. Makefilet ovat hyödyllisiä etenkin ohjelmoijille, jotka voivat niiden avulla helpottaa ja automatisoida halutun ohjelman käännösprosessin. Makefilen rakenne on seuraavanlainen: kohdetiedosto: lähdetiedosto1 lähdetiedosto2 lähdetiedosto3 <tabulaattori>kääntämiskomennot. Esimerkiksi C- kieliselle hey.c nimiselle ohjelmalle voidaan luoda seuraavanlainen Makefile: hey: hey.c gcc hey.c -o hey. Ohjelma saadaan ajettua ja käännettyä kirjoittamalla komento make samassa hakemistossa. Samassa Makefilessä voi olla myös useimpia käännöskohteita. Näitä käännöskohteita voidaan hyödyntää myös toisesta kohteesta käsin. Make tukee myös erilaisten muuttujien käyttöä Makefilessä. Tämän avulla saadaan tiedostosta helpommin ylläpidettävä ja siirrettävä.
5 GDB GNU Emacs Gdb (GNU Debugger) on GNU-projektin virheenjäljitysohjelma. Gdb:tä käytetään komentoriviltä ja se onkin erittäin tehokas työkalu ohjelmistojen virheiden etsimiseen. Ohjelman ensimmäinen versio julkaistiin vuonna 1986 Richard Stallmanin toimesta osana hänen GNU-projektiaan. Gdb toimii GNU GPL lisenssin alaisuudessa. Gdb tukee useita eri ohjelmointikieliä mm. Ada, C, C++, Objetive-C, Free Pascal, Fortran ja Javaa. Gdb:ssä ohjelman kääntämiseen tarvitaan debug-tietoja. GCC:tä käytettäessä tämä onnistuu kirjoittamalla tai valitsemalla g. Esimerkiksi gcc ohjelma.c o softa g. Gdb käynnistyy komennolla gdb./ohjelma. Tämän jälkeen Gdb:tä käytetään sen omilla komennoilla. Gnu Emacs on monipuolinen tekstieditori, jonka kehityksen aloitti Richard Stallman vuonna 1984. Emacs perustuu GPL-lisenssiin. Emacsia voidaan myös laajentaa Emacs Lisp-ohjelmointikielellä. Emacsin mukana tulee erilaisia työkaluja mm. Genus, Rmail, kalenteri, laskin ja muutamia pelejä. GNU Emacsissa liikutaan tiedostoissa erilaisilla käskyillä. Esimerkiksi C-p komennolla siirrytään rivi ylöspäin ja vastaavasti C-n siirrytään rivi alaspäin. Kun taas C-x C-s tallentaa tiedoston.
6 GNU C Library (glibc,libc) Glibc on Roland McGrathyn kehittämä ja vuonna 1987 ensimmäisen kerran julkaistu ohjelmointikirjasto. Kirjasto tarjoaa tavallisimmat C-kielen toiminnot ja rutiinit ohjelmille. Glibc perustuu GNU:n LGPL lisenssiin. Linux järjestelmissä käytetään yleensä GNU:n C-kirjastoa eli glibciä. Erilaisissa sulautetuissa järjestelmissä saatetaan kuitenkin käyttää muita yksinkertaisempia ja vähemmän resursseja vieviä versioita. Tällaisia versioita ovat mm. dietlibc, uclibc ja newlib. Suuri osa käytössä olevista ohjelmista käyttää kuitenkin libc:tä ja sen päivittäminen epäyhteensopivaan versioon voi saada järjestelmän toimimattomaksi. Tämän vuoksi päivityksessä tuleekin olla erityisen tarkka ja varovainen. 2.16 kesäkuu 2012 x32 ABI tuki, ISO C11,SystemTap 2.15 maaliskuu 2012 2.14 kesäkuu 2011 2.13 tammikuu 2011 2.12 toukokuu 2010 RHEL 6 2.11 lokakuu 2009 SLES 11, eglibc, Debian 6 2.10 toukokuu 2009 2.9 marraskuu 2008 Ubuntu 9.04 Kuva glibc:n versio historiasta versiosta 2.9 ylöspäin.
7 GNU build system (Autotools) GNU build system on GNU-projektin laajalti tuettu ja käytetty kehitystyökalupaketti erilaisten ohjelmien kääntämiseen ja muihin niihin liittyviin kehitystoimenpiteisiin. Autools pyrkii tekemään lähdekoodista helpommin siirrettävää. Pakettiin sisältyy Autoconf, Automake, Autoreconf, Libtool ja Aclocal ohjelmat. Autoconfin tehtävänä on muuttaa configure.in mallitiedosto configure-skriptiksi. Autoconf ja automaken toiminnan viivadiagrammi.
8 GNU Binutils GNU Binutils on kokoelma ohjelmia binäärimuotoisten tiedostojen käsittelyyn. Toimii GNU GPL-lisenssin alaisuudessa. Gnu Binutilssia käytetään yleensä yhdessä GCC, Make ja GNU Debuggerin kanssa. GNU Binutils sisältää seuraavat työkalut: ld linkittäjä as assembly kääntäjä addr2line muuntaa osoitteen tiedostoksi ja rivinumeroksi ar c++filt dlltool windowsin dll tiedostoja tuottava ohjelma gold vaihtoehtoinen ELF-linkittäjä gprof nlmconv nm objcopy objdump ranlib readelf size strings strip windmc windres
9 Lähteet http://www.gnu.org/ http://en.wikipedia.org/wiki/gnu_project http://en.wikipedia.org/wiki/gnu http://www.gnu.org/gnu/thegnuproject.fi.html linux.fi/wiki/ http://fsfe.org/freesoftware/basics/gnuproject.en.html