----------------------------------------------------------------------- D J G P P V 2 - P I K A O P A S M B N E T I N K Ž Y T T Ž J I L L E J e r e K „ p y a h o Versio 2.01 29.11.1996 ----------------------------------------------------------------------- -----------------------V A R O I T U S -------------------------------- T„m„ ohje on kirjoitettu siin„ toivossa ett„ siit„ olisi sen lukijoille hy”ty„, mutta kirjoittaja ei ota vastuuta mahdollisten virheiden tai ep„tarkkuuksien aiheuttamista vahingoista. Mik„li l”yd„t t„st„ ohjeesta virheit„, ilmoita niist„ tekij„lle MBnetiss„. ----------------------------------------------------------------------- -----------------------H U O M A U T U S------------------------------- T„m„ pikaopas sis„lt„„ radikaalin muutoksen sek„ MikroBitin C-kurssilla ett„ muissa MikroBitin ohjelmointiaiheisissa artikkeleissa esitettyihin tietoihin ett„ 28.7.1995 ja 9.2.1996 p„iv„ttyihin edellisiin pikaoppai- siin, jotka molemmat k„sitteliv„t DJGPP:n versiota 1.12. T„ss„ oppaassa neuvotaan DJGPP:n asentaminen kokonaisuudessaan sek„ C- ett„ C++-ohjel- mointia varten. Versio 2.01 sis„lt„„ korjauksia ja t„ydennyksi„, jotka ovat aiheellisia DJGPP:n pienp„ivityksen 2.00 --> 2.01 takia. ----------------------------------------------------------------------- ------- Sis„lt” ------- 0. Johdanto 1. Tarvittavat paketit 2. Hakemiston tekeminen 3. Pakettien purkaminen 4. Ymp„rist”muuttujan ja hakupolun asettaminen 5. CWSDPMI:n asentaminen 6. Asennuksen testaaminen 7. MikroBitin C-kurssin esimerkkiohjelmien k„„nt„minen 8. Lis„materiaalin asentaminen 9. J„ik” viel„ kysytt„v„„? --------------------------------------------------------------------- 0. Johdanto T„m„ pikaopas on tarkoitettu avuksi DJGPP-ohjelmiston asentamiseen erityisesti aloitteleville C- ja C++-ohjelmoijille. DJGPP on DJ Delorien GNU C/C++:n pohjalta kehitt„m„ ilmainen C- ja C++- k„„nt„j„, jonka voit kopioida itsellesi MBnetist„. Vaikka DJGPP on ilmainen, se on yleisesti tunnustettu hyv„ksi C/C++-k„„nt„j„ksi. Se sis„lt„„ my”s DOS-laajentimen nimelt„ GO32, jonka avulla voi ottaa k„ytt””n PC-koneen koko muistin. DJGPP pohjautuu GNU C/C++:aan, joka puolestaan on per„isin UNIX- ymp„rist”st„. Toisin kuin useimmat MS-DOSissa toimivat C- ja C++- k„„nt„j„t, se on 32-bittinen. DJGPP:n ottaminen k„ytt””n vaatii ainakin keskim„„r„ist„ ellei parempaa MS-DOSin tuntemusta, mutta t„m„n oppaan pit„isi ainakin auttaa alkuun. T„m„ pikaopas k„sittelee DJGPP:n versiota 2.0. Mik„li sinulla on k„yt”ss„si vanhempi versio 1.12, voit joko kopioida MBnetist„ vanhan DJGPP-pikaoppaan (jos v„ltt„m„tt„ haluat tai sinun on jostain syyst„ pakko k„ytt„„ vanhaa versiota), tai aloittaa puhtaalta p”yd„lt„ ja kopioida itsellesi versio 2.0 MBnetist„. 1. Tarvittavat paketit Kopioi ensin tiedostot readme.dj2 sek„ faq202b.zip ja tutustu niihin parhaan kykysi mukaan. T„ll„ pikaoppaalla p„„set kyll„ alkuun ilman niit„kin, mutta noista tiedostoista l”ytyy tietoja my”s monesta aiheesta joita t„ss„ ei k„sitell„. DJGPP:n k„ytt””n tarvittavat paketit kuvauksineen ovat seuraavat: readme.dj2 "Lue minut" -dokumentti (alkuper„inen nimi: readme.1st) faq202b.zip DJGPP FAQ v2.02: yleisimm„t kysymykset ja vastaukset niihin djdev201.zip DJGPP:n k„ytt””n tarvittava peruspaketti, v2.01 bnu27b.zip Binutils v2.7: erilaisia olennaisia apuohjelmia gcc2721b.zip GNU C -k„„nt„j„ v2.7.2.1 gpp272b.zip GNU C++ -k„„nt„j„ v2.7.2 lgp271b.zip C++-kirjastot v.2.7.1 txi390b.zip info-ohjelman versio 3.9.0 dokumenttien lukemiseen csdpmi3b.zip CWSDPMI-ohjelman versio 3 DPMI-muistin k„ytt””n (jos k„ytet„„n DJGPP:t„ pelk„ss„ DOS:issa eik„ esimerkiksi Windows 95:ss„) N„iden pakettien koko on yhteens„ noin 5,6 Mt. Jokaisessa paketissa on sen sis„lt„mien ohjelmien dokumentit valmiina. Erillisi„ dokumentaatiopaketteja ei tarvitse kopioida kuten versiossa 1.12. Dokumenttien lukemiseen tarvitaan kuitenkin info-ohjelma, joka on mainittu yll„ olevassa listassa. Mik„li haluat k„ytt„„ GNU make -ohjelmaa projektien yll„pitoon, tarvitset lis„ksi paketin mak375b.zip (204 kt). Kaikkien t„ss„ kohdassa mainittujen pakettien asentaminen vie levytilaa yhteens„ noin 14,5 Mt. T„h„n ei ole laskettu mukaan itse paketteja. Pahimmassa tapauksessa tarvitset siis DJGPP:n asentamiseen yli 20 Mt levytilaa, jos paketit ovat samalla levyosiolla. Paketit sis„lt„v„t lis„ksi runsaasti pieni„ tiedostoja, joten jos osion varausyksik”n koko on suuri, tilaa kuluu viel„ paljon enemm„n. 2. Hakemiston tekeminen Tee DJGPP:lle oma hakemisto sen aseman juurihakemistoon johon haluat asentaa ohjelmiston (yleens„ asema C:) seuraavilla komennoilla: C: CD \ MD DJGPP CD DJGPP Nyt kehotteena pit„isi n„ky„ 'C:\DJGPP>', jos kehotteesi on asetettu n„ytt„m„„n ty”hakemisto ja >-merkki. P„„asia on, ett„ ty”hakemistona on C:\DJGPP. T„m„n voit tarkistaa antamalla pelk„n CD-komennon, jolloin MS-DOS n„ytt„„ ty”hakemiston. 3. Pakettien purkaminen Kaikki DJGPP-paketit sis„lt„v„t alihakemistorakenteen, jonka voi tehd„ automaattisesti paketteja purkaessa. Jos k„yt„t PKUNZIP-ohjelmaa, kaikki paketit puretaan komennolla PKUNZIP -d -o asema:\polku\paketti miss„ 'asema', 'polku' ja 'paketti' korvataan purettavan paketin t„ydellisell„ nimell„, esimerkiksi c:\download\djdev201.zip. Pakettien hakemistorakenne on suhteellinen perushakemistoon n„hden, eli kaikki hakemistot syntyv„t vaiheessa 1 tehdyn DJGPP-haaran alle. Jos haluat olla todella gurumainen, voit purkaa kaikki paketit kerralla k„ytt„m„ll„ MS-DOS:in FOR-komentoa, n„in: for %%a in (c:\djgpptmp\*.zip) do pkunzip -d -o %a Edellisess„ esimerkiss„ oletetaan, ett„ tarvittavat paketit ovat hakemistossa C:\DJGPPTMP, eik„ hakemistossa ole muita paketteja. 4. Ymp„rist”muuttujan ja hakupolun asettaminen DJGPP:n ei toimi kunnolla ellei DJGPP-ymp„rist”muuttujaa aseteta. T„t„ varten on AUTOEXEC.BAT-tiedostoon lis„tt„v„ seuraava rivi: SET DJGPP=C:\DJGPP\DJGPP.ENV Lis„ksi pit„„ lis„t„ hakemisto C:\DJGPP\BIN hakupolkuun. Omassa AUTOEXEC.BAT:issasi on todenn„k”isesti jo PATH-k„sky, joka on suunnilleen t„m„n n„k”inen: PATH C:\DOS;C:\BAT;C:\UTIL DJGPP:n lis„„misen j„lkeen PATH-komennon pit„isi n„ytt„„ t„lt„: PATH C:\DOS;C:\BAT;C:\UTIL;C:\DJGPP\BIN Jos olet asentanut DJGPP:n johonkin muuhun asemaan ja/tai hakemistoon, k„yt„t tietysti PATH-komennossa vastaavia tietoja. Ymp„rist”muuttujassa DJGPP viitataan tiedostoon nimelt„ DJGPP.ENV. T„m„ tekstitiedosto sijaitsee DJGPP-hakemistossa ja sis„lt„„ t„rkeit„ tietoja, joita ei pid„ menn„ muuttamaan ellei tied„ tarkalleen mit„ tekee. 5. CWSDPMI-ohjelman asentaminen DJGPP k„ytt„„ DPMI-standardia muistin hallintaan. Muun muassa Windows 95 ja OS/2 sis„lt„v„t DPMI-palvelimen, mutta jos k„yt„t DJGPP:t„ pelk„ss„ MS-DOSissa, sinun pit„„ asentaa CWSDPMI-ohjelma. Se on paketissa csdpmi3.zip (40 kt). CWSDPMI asennetaan lis„„m„ll„ AUTOEXEC.BAT-tiedoston per„„n rivi cwsdpmi -p T„m„ asentaa CWSDPMI:n pysyv„sti muistiin. Ohjelma poistetaan komennolla cwsdpmi -u 6. Asennuksen testaaminen Voit testata DJGPP-asennuksen onnistumisen kirjoittamalla ja ajamalla pari pient„ esimerkkiohjelmaa, yhden C-kielisen ja yhden C++-kielisen. Kopioi seuraava C-kielinen ohjelma uuteen dokumenttiin tekstieditorissa ja tallenna se nimell„ hello1.c: /* C-kielinen DJGPP-testiohjelma alkaa */ #include int main(void) { printf("Hello, protected mode world!\n"); return 0; } /* C-kielinen DJGPP-testiohjelma loppuu */ Palaa MS-DOSin komentoriville ja k„„nn„ ohjelma seuraavalla komennolla: gcc -o hello1.exe hello1.c Jos kaikki on kunnossa, et saa mit„„n ilmoituksia ruudulle. Kun k„„nn”s on p„„ttynyt, tarkista ett„ hakemistossa on tiedosto hello1.exe. Kun ajat tiedoston, se tulostaa Hello, protected mode world! ja palaa DOSiin. C++-kielen toimivuuden voit testata seuraavalla ohjelmalla: // C++-kielinen DJGPP-testiohjelma alkaa #include int main() { cout << "Hello, protected mode world!" << endl; return 0; } // C++-kielinen DJGPP-testiohjelma loppuu Tallenna ohjelma tiedostoon hello2.cc. K„„nn„ ohjelma seuraavalla komennolla: gcc -o hello2.exe hello2.cc -liostream Jos kaikki menee hyvin, mit„„n ilmoituksia ei tule. Aja ohjelma hello2.exe. Ruudulla pit„isi n„ky„ sama teksti kuin C-kielist„ ohjelmaa ajaessa. Onneksi olkoon! Nyt sinulla pit„isi olla toimiva DJGPP. Jos k„„nn„t ohjelman ilman valitsinta -liostream, saat seuraavan kaltaisia virheilmoituksia: hello2.cc(.text+0x18): undefined reference to 'endl(ostream &)' hello2.cc(.text+0x22): undefined reference to 'cout' hello2.cc(.text+0x27): undefined reference to 'ostream::operator<< (char const *)' hello2.cc(.text+0x32): undefined reference to 'ostream::operator<< (ostream &(*)(ostream &))' Kirjasto \djgpp\lib\libiostr.a on C++:n iostream-kirjasto, jota tarvitaan cout:in ja muiden vuotoimintojen k„ytt””n. C++-ohjelmia voi k„„nt„„ my”s komennolla gxx, jolloin ei tarvita lainkaan valitsinta -liostream. 7. MikroBitin C-kurssin esimerkkiohjelmien k„„nt„minen MikroBitiss„ alkaen numerosta 6-7/1995 julkaistun C-ohjelmointikurssin esimerkit on testattu DJGPP:ll„. Ne kaikki saa ajettavaan muotoon samalla tavalla, k„„nt„m„ll„ komennolla gcc -o ohjelma1.exe ohjelma1.c DJGPP:n versio 2.0 k„„nt„„ ohjelman suoraan EXE-muotoon. N„in saadaan tiedosto nimelt„ ohjelma1.exe, jonka voi ajaa komennolla ohjelma1 Jos haluat k„„nn”ksen aikana n„yt”lle lis„tietoja siit„ mit„ DJGPP oikeastaan tekee, voit lis„t„ k„„nn”skomentoon heti gcc:n per„„n valitsimen -v ("verbose" eli puhelias). 8. Lis„materiaalin asentaminen DJGPP:hen kuuluu virheenkorjausohjelma eli debuggeri nimelt„ fsdb, jonka k„yt”st„ saa apua painamalla F1-n„pp„int„ kun ohjelma on k„ynniss„. Tehokkaampi mutta vaikeaselkoisempi debuggeri on gdb, jonka ohjelmat ovat paketissa gdb416b.zip (508 kt). Kaikista GNU-ohjelmista on my”s saatavissa l„hdekoodi. Jos siis haluat tutkia miten C- tai C++-k„„nt„j„ tai jokin sen oheisohjelma on tehty, voit imuroida l„hdekoodit MBnetist„ ja tutustua niihin. L„hdekoodipaketin nimess„ on yleens„ per„ss„ olevan b-kirjaimen tilalla s (source), eli esimerkiksi gcc-k„„nt„j„n l„hdekoodi on tiedostossa gcc2721s.zip. 9. J„ik” viel„ kysytt„v„„? Jos sinulla kaiken t„m„n j„lkeen on viel„ polttavia DJGPP-ongelmia, toimi n„in: - Lue ensin DJGPP:n virallinen FAQ-lista, paketissa faq202b.zip. - Jos ongelma ei ratkea, kysy sit„ yleisesti MBnetin alueella 8, eli PC-ohjelmointi-alueella. Pyyd„n mit„ kohteliaimmin: „l„ l„het„ yksityispostia minulle DJGPP-asioissa. Yleisesti kysytyt kysymykset auttavat muitakin, ja saat niihin vastauksia nopeammin. - Jos olet Internet-k„ytt„j„, DJGPP:lle omistettu uutisryhm„ on nimelt„„n comp.os.msdos.djgpp. Hauskaa ohjelmointia DJGPP:ll„!