Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

GNU- ohjelmointityökalut Samppa Rönkä OH2. GNU ? GNU (GNU's Not Unix) on ohjelmoija Richard Stallmanin vuonna 1983 käynnistämä projekti, jonka tavoitteena.

Samankaltaiset esitykset


Esitys aiheesta: "GNU- ohjelmointityökalut Samppa Rönkä OH2. GNU ? GNU (GNU's Not Unix) on ohjelmoija Richard Stallmanin vuonna 1983 käynnistämä projekti, jonka tavoitteena."— Esityksen transkriptio:

1 GNU- ohjelmointityökalut Samppa Rönkä OH2

2 GNU ? GNU (GNU's Not Unix) on ohjelmoija Richard Stallmanin vuonna 1983 käynnistämä projekti, jonka tavoitteena on kehittää täydellinen Unixin kaltainen käyttöjärjestelmä, joka on vapaa ohjelmisto: GNU-järjestelmä, joka on vapaasti käytettävissä ja muokattavissa GNU-lisenssin mukaisesti. GNU (GNU's Not Unix) on ohjelmoija Richard Stallmanin vuonna 1983 käynnistämä projekti, jonka tavoitteena on kehittää täydellinen Unixin kaltainen käyttöjärjestelmä, joka on vapaa ohjelmisto: GNU-järjestelmä, joka on vapaasti käytettävissä ja muokattavissa GNU-lisenssin mukaisesti. Nykyisin GNU-projekti toimii Free Software Foundationin alaisuudessa. Nykyisin GNU-projekti toimii Free Software Foundationin alaisuudessa.

3 GCC ? Richard Stallman kehitti GCC-kääntäjän vuonna 1987 GNU-projektiaan varten. Richard Stallman kehitti GCC-kääntäjän vuonna 1987 GNU-projektiaan varten. Nykyään GCC:tä kehittää sekalainen joukko ohjelmoijia ympäri maailman. Nykyään GCC:tä kehittää sekalainen joukko ohjelmoijia ympäri maailman. Käännetty useammalle suorittimelle ja käyttöjärjestelmälle kuin mitään muuta kääntäjää. Käännetty useammalle suorittimelle ja käyttöjärjestelmälle kuin mitään muuta kääntäjää. GNU-järjestelmän sekä sen Linux-pohjaisten varianttien (GNU/Linux) virallinen kääntäjä. GNU-järjestelmän sekä sen Linux-pohjaisten varianttien (GNU/Linux) virallinen kääntäjä. Käytössä lukuisissa muissa käyttöjärjestelmissä, kuten BSD:issä, Mac OS X:ssä, NeXTSTEPissä ja BeOSissa. Käytössä lukuisissa muissa käyttöjärjestelmissä, kuten BSD:issä, Mac OS X:ssä, NeXTSTEPissä ja BeOSissa.

4 GCC ? GCC on yleisin kääntäjävalinta kun halutaan tehdä koodia jota ajetaan monenlaisella raudalla. GCC on yleisin kääntäjävalinta kun halutaan tehdä koodia jota ajetaan monenlaisella raudalla. Sama parseri ympäristöstä riippumatta – Jos koodi kääntyy yhdessä ympäristössä, se todennäköisesti toimii kaikissa. Sama parseri ympäristöstä riippumatta – Jos koodi kääntyy yhdessä ympäristössä, se todennäköisesti toimii kaikissa. Joissain tapauksissa tuottaa hitaampia käännöksiä kuin natiivit kääntäjät. Joissain tapauksissa tuottaa hitaampia käännöksiä kuin natiivit kääntäjät. …mutta on ilmainen. …mutta on ilmainen.

5 Ohjelmointikielet GCC:n versio 4.1.0:n (28.2.2006) standardi julkaisu sisältää tuen seuraaville kielille: GCC:n versio 4.1.0:n (28.2.2006) standardi julkaisu sisältää tuen seuraaville kielille: - Ada (GCC for Ada aka GNAT) - C - C++ (GCC for C++ aka G++) - Fortran (GCC for Fortran aka GFortran) - Java (GCC for Java aka GCJ) - Objective-C - Objective-C++ Lisäksi saatavilla mm: Pascal, Modula-2, Modula-3, Mercury, VHDL, ja PL/I. Lisäksi saatavilla mm: Pascal, Modula-2, Modula-3, Mercury, VHDL, ja PL/I.

6 Arkkitehtuurit GCC tukee seuraavia suorittimia: GCC tukee seuraavia suorittimia: Alpha, ARM, Blackfin, H8/300, System/370, System/390, IA-32 (x86) & AMD64, IA-64 i.e. the "Itanium”, Motorola 68000, Motorola 88000, MIPS, PA-RISC, PDP-11, PowerPC, SuperH, SPARC, VAX, Renesas R8C/M16C/M32C families, MorphoSys family Lisäksi vähemmän tunnettuja: Lisäksi vähemmän tunnettuja: A29K, ARC, Atmel AVR, C4x, CRIS, D30V, DSP16xx, FR-30, FR-V, Intel i960, IP2000, M32R, 68HC11, MCORE, MMIX, MN10200, MN10300, NS32K, ROMP, Stormy16, V850, ja Xtensa.

7 Työkalut: gcc ”gcc” suorittaa joukon muita ohjelmia jotka kääntävät ohjelmakoodin ajettavaan muotoon ”gcc” suorittaa joukon muita ohjelmia jotka kääntävät ohjelmakoodin ajettavaan muotoon C-kielinen ohjelma käännetään seuraavasti: C-kielinen ohjelma käännetään seuraavasti: gcc ohjelma.c –o esi-merkki Tuloksena on ajettava tiedosto nimeltään ”esi- merkki”. Tuloksena on ajettava tiedosto nimeltään ”esi- merkki”.

8 Työkalut: gcc gcc käännöksen vaiheet: gcc käännöksen vaiheet: 1. Esikäsittely: cpp ”C Pre-Processor”, käsittelee #-komennot kuten #include, #macro ja #ifdef 2. Käännös: cc1 kääntää C-koodin assembleriksi 3. Optimointi: assembler-koodiin tehdään suorituskykyä parantavia muutoksia, cc1 hoitaa tämän 4. Assembler: assembler ”as” kääntää assembler-koodin objektitiedostoksi 5. Linkkeri: linkkeri kasaa objektitiedostot ja lisäkirjastot ajettavaksi tiedostoksi

9 Työkalut: make työkalu joka kääntää ohjelman automaattisesti työkalu joka kääntää ohjelman automaattisesti lukee Makefile-tiedostosta käännösohjeet, katsoo tiedostojen päivämääriä, ja kääntää uudelleen kaiken, mikä riippuu jostain muuttuneesta tiedostosta lukee Makefile-tiedostosta käännösohjeet, katsoo tiedostojen päivämääriä, ja kääntää uudelleen kaiken, mikä riippuu jostain muuttuneesta tiedostosta Makefilessa voi olla useita käännösvaihtoehtoja, esim. make all tai make foo.o Makefilessa voi olla useita käännösvaihtoehtoja, esim. make all tai make foo.o usein myös make clean, joka poistaa käännöksen tulokset (ajaa joukon rm-komentoja) usein myös make clean, joka poistaa käännöksen tulokset (ajaa joukon rm-komentoja) ohje: ”info make” ohje: ”info make”

10 Esimerkki Makefile CC = gcc CFLAGS = -Wall -g # tai esim. CFLAGS = -Wall -O2 -g LDFLAGS = LIBS = # LIBS = -lm jos tarvitaan TARGET = prog OBJS = prog.o mysort.o all:$(TARGET)clean: rm -f $(OBJS) $(TARGET) $(TARGET): $(OBJS) $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) %.o: %.c $(CC) -c $(CFLAGS) $<.PHONY: all clean

11 Työkalut: gdb gdb on debuggeri, jolla voi: gdb on debuggeri, jolla voi: - keskeyttää ohjelman suorituksen - tutkia muuttujien arvoja - jatkaa suoritusta esim. rivi kerrallaan - pysähtyä aina kun päästään tiettyyn kohtaan tai tietty ehto täyttyy - katsoa core-tiedostosta mihin kaatunut ohjelma jäi - tavoitteena etsiä bugeja tai katsoa, miten ohjelman suoritus etenee - gdb = GNU-projektin debuggeri (muutkin samankaltaisia, esim. Javan jdb) C-ohjelma pitää kääntää -g-optiolla (muuten saa vähemmän tietoa). C-ohjelma pitää kääntää -g-optiolla (muuten saa vähemmän tietoa). Käyttö: Käyttö: gdb ohjelma

12 Työkalut: diff & patch Todella kätevä tapa päivittää koodia Todella kätevä tapa päivittää koodia diff etsii eroavaisuuksia kahdesta tiedostosta diff etsii eroavaisuuksia kahdesta tiedostosta patch muokkaa tiedostoa diffin tulosteen perusteella patch muokkaa tiedostoa diffin tulosteen perusteella versionhallintatyökaluissa (kuten CVS) diff on yleensä integroituna valmiiksi versionhallintatyökaluissa (kuten CVS) diff on yleensä integroituna valmiiksi Käyttö yleensä: Käyttö yleensä: diff -u vanha-koodi.c uusi-koodi.c

13 Työkalut: emacs Emacs on ”kätevä” tekstieditori, jossa on paljon ohjelmointia helpottavia ominaisuuksia, kuten: Emacs on ”kätevä” tekstieditori, jossa on paljon ohjelmointia helpottavia ominaisuuksia, kuten: - avainsanojen väritys - koodin kääntö suoraan editorista - man-sivujen selaus Useimmat graafisten kehitysympäristöjen toiminnot löytyvät jossain muodossa Emacsistakin. Useimmat graafisten kehitysympäristöjen toiminnot löytyvät jossain muodossa Emacsistakin.

14 Kuva: emacs

15 Työkalut: valgrind Valgrind on ”muistinhallintadebuggeri”, joka ajaa C-ohjelman (hitaasti) ja kertoo, missä kohdissa se: Valgrind on ”muistinhallintadebuggeri”, joka ajaa C-ohjelman (hitaasti) ja kertoo, missä kohdissa se: - käytti alustamatonta muistia - kirjoitti olemattomaan paikkaan pinossa - kirjoitti muualle kuin mallocilla varatulle muistialueelle ym. mukana myös muita työkaluja, mm. cachegrind kertoo kuinka ohjelma käyttää välimuistia mukana myös muita työkaluja, mm. cachegrind kertoo kuinka ohjelma käyttää välimuistia

16 Muita työkaluja Autoconf auttaa hyvin porttautuvan C-koodin kääntämisessä Autoconf auttaa hyvin porttautuvan C-koodin kääntämisessä Automake on Autoconfin päälle rakennettu kokonaisvaltaisempi Makefilejen rakentaja Automake on Autoconfin päälle rakennettu kokonaisvaltaisempi Makefilejen rakentaja versionhallintaan: RCS, CVS, Subversion versionhallintaan: RCS, CVS, Subversion gprof eli ”profiler” kertoo, missä funktioissa ohjelma vietti eniten aikaa (info gprof, man gprof) gprof eli ”profiler” kertoo, missä funktioissa ohjelma vietti eniten aikaa (info gprof, man gprof)

17 Lähteet Sisältö lainattu enemmän tai vähemmän suoraan näistä: Sisältö lainattu enemmän tai vähemmän suoraan näistä: - http://www.gnu.org - http://gcc.gnu.org/onlinedocs/gcc- 4.1.0/gccint/index.html#Top - http://www.cs.hut.fi/Opinnot/T- 106.3100/K2006/Luennot/unix-kalvot.pdf - http://en.wikipedia.org/wiki/GNU_Compiler_Collection - http://fi.wikipedia.org/wiki/GNU - http://cslibrary.stanford.edu/107/UnixProgrammingTools.pdf


Lataa ppt "GNU- ohjelmointityökalut Samppa Rönkä OH2. GNU ? GNU (GNU's Not Unix) on ohjelmoija Richard Stallmanin vuonna 1983 käynnistämä projekti, jonka tavoitteena."

Samankaltaiset esitykset


Iklan oleh Google