.
-----------------------------------------------------------------------
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ä!