DJGPP on DJ Delorien GNU C/C++:n pohjalta tekemä ilmainen C/C++-kääntäjä MS-DOSille. Sillä voi tehdä suojatussa tilassa toimivia ohjelmia, jotka käyttävät koneen muistia hyväksi tehokkaasti.
Ennen kuin otat DJGPP:n käyttöön lue suomenkielinen pikaopas nimeltä MBNETDJ2.TXT, joka löytyy tältä levyltä ja on myös tämän sivun lopussa.
DJGPP vaatii vähintään 386-prosessorin ja kahdeksan megatavua muistia. Käyttö voi onnistua myös 4 Mt muistilla, mutta kankeasti.
----------------------------------------------------------------------- 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 <stdio.h> 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 <iostream.h> 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ä!