DJGPP 2.01

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.

Laitteistovaatimukset

DJGPP vaatii vähintään 386-prosessorin ja kahdeksan megatavua muistia. Käyttö voi onnistua myös 4 Mt muistilla, mutta kankeasti.

MBNETDJ2.TXT

-----------------------------------------------------------------------

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