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

                 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

        (Tiedostonimet pivitetty 30.12.1997 - Markus Halttunen)

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

-----------------------V A R O I T U S --------------------------------
Tm ohje on kirjoitettu siin toivossa ett siit olisi sen lukijoille
hyty, mutta kirjoittaja ei ota vastuuta mahdollisten virheiden tai
eptarkkuuksien aiheuttamista vahingoista. Mikli lydt tst ohjeesta
virheit, ilmoita niist tekijlle MBnetiss.
-----------------------------------------------------------------------

-----------------------H U O M A U T U S-------------------------------
Tm pikaopas sislt radikaalin muutoksen sek MikroBitin C-kurssilla
ett muissa MikroBitin ohjelmointiaiheisissa artikkeleissa esitettyihin
tietoihin ett 28.7.1995 ja 9.2.1996 pivttyihin edellisiin pikaoppai-
siin, jotka molemmat ksittelivt DJGPP:n versiota 1.12. Tss oppaassa
neuvotaan DJGPP:n asentaminen kokonaisuudessaan sek C- ett C++-ohjel-
mointia varten.

Versio 2.01 sislt korjauksia ja tydennyksi, jotka ovat aiheellisia
DJGPP:n pienpivityksen 2.00 --> 2.01 takia.
-----------------------------------------------------------------------

-------
Sislt
-------
0. Johdanto
1. Tarvittavat paketit
2. Hakemiston tekeminen
3. Pakettien purkaminen
4. Ympristmuuttujan ja hakupolun asettaminen
5. CWSDPMI:n asentaminen
6. Asennuksen testaaminen
7. MikroBitin C-kurssin esimerkkiohjelmien kntminen
8. Lismateriaalin asentaminen
9. Jik viel kysyttv?

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

0. Johdanto

Tm pikaopas on tarkoitettu avuksi DJGPP-ohjelmiston asentamiseen
erityisesti aloitteleville C- ja C++-ohjelmoijille. DJGPP on
DJ Delorien GNU C/C++:n pohjalta kehittm ilmainen C- ja C++-
kntj, jonka voit kopioida itsellesi MBnetist. Vaikka DJGPP on
ilmainen, se on yleisesti tunnustettu hyvksi C/C++-kntjksi. Se
sislt mys DOS-laajentimen nimelt GO32, jonka avulla voi ottaa
kyttn PC-koneen koko muistin.

DJGPP pohjautuu GNU C/C++:aan, joka puolestaan on perisin UNIX-
ympristst. Toisin kuin useimmat MS-DOSissa toimivat C- ja C++-
kntjt, se on 32-bittinen. DJGPP:n ottaminen kyttn vaatii
ainakin keskimrist ellei parempaa MS-DOSin tuntemusta, mutta
tmn oppaan pitisi ainakin auttaa alkuun.

Tm pikaopas ksittelee DJGPP:n versiota 2.0. Mikli sinulla on
kytsssi vanhempi versio 1.12, voit joko kopioida MBnetist
vanhan DJGPP-pikaoppaan (jos vlttmtt haluat tai sinun on
jostain syyst pakko kytt vanhaa versiota), tai aloittaa
puhtaalta pydlt ja kopioida itsellesi versio 2.0 MBnetist.


1. Tarvittavat paketit

Kopioi ensin tiedostot readme.dj2 sek faq202b.zip ja tutustu niihin
parhaan kykysi mukaan. Tll pikaoppaalla pset kyll alkuun ilman
niitkin, mutta noista tiedostoista lytyy tietoja mys monesta aiheesta
joita tss ei ksitell.

DJGPP:n kyttn tarvittavat paketit kuvauksineen ovat seuraavat:

readme.dj2    "Lue minut" -dokumentti (alkuperinen nimi: readme.1st)
faq210b.zip   DJGPP FAQ v2.02: yleisimmt kysymykset ja vastaukset niihin
djdev201.zip  DJGPP:n kyttn tarvittava peruspaketti, v2.01
bnu281b.zip    Binutils v2.7: erilaisia olennaisia apuohjelmia
gcc2721b.zip  GNU C -kntj v2.7.2.1
gpp2721b.zip   GNU C++ -kntj v2.7.2
lgp271b.zip   C++-kirjastot v.2.7.1
txi390b.zip   info-ohjelman versio 3.9.0 dokumenttien lukemiseen
csdpmi4b.zip  CWSDPMI-ohjelman versio 3 DPMI-muistin kyttn (jos kytetn
              DJGPP:t pelkss DOS:issa eik esimerkiksi Windows 95:ss)

Niden pakettien koko on yhteens noin 5,6 Mt.


Jokaisessa paketissa on sen sisltmien ohjelmien dokumentit valmiina.
Erillisi dokumentaatiopaketteja ei tarvitse kopioida kuten versiossa
1.12. Dokumenttien lukemiseen tarvitaan kuitenkin info-ohjelma, joka
on mainittu yll olevassa listassa.

Mikli haluat kytt GNU make -ohjelmaa projektien yllpitoon, tarvitset
lisksi paketin mak375b.zip (204 kt).

Kaikkien tss kohdassa mainittujen pakettien asentaminen vie levytilaa
yhteens noin 14,5 Mt. Thn ei ole laskettu mukaan itse paketteja.
Pahimmassa tapauksessa tarvitset siis DJGPP:n asentamiseen yli 20 Mt
levytilaa, jos paketit ovat samalla levyosiolla. Paketit sisltvt
lisksi runsaasti pieni tiedostoja, joten jos osion varausyksikn
koko on suuri, tilaa kuluu viel paljon enemmn.


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 pitisi nky 'C:\DJGPP>', jos kehotteesi on asetettu
nyttmn tyhakemisto ja >-merkki. Pasia on, ett tyhakemistona on
C:\DJGPP. Tmn voit tarkistaa antamalla pelkn CD-komennon, jolloin
MS-DOS nytt tyhakemiston.


3. Pakettien purkaminen

Kaikki DJGPP-paketit sisltvt alihakemistorakenteen, jonka voi tehd
automaattisesti paketteja purkaessa. Jos kytt PKUNZIP-ohjelmaa,
kaikki paketit puretaan komennolla

PKUNZIP -d -o asema:\polku\paketti

miss 'asema', 'polku' ja 'paketti' korvataan purettavan paketin 
tydellisell nimell, esimerkiksi c:\download\djdev201.zip.

Pakettien hakemistorakenne on suhteellinen perushakemistoon nhden,
eli kaikki hakemistot syntyvt vaiheessa 1 tehdyn DJGPP-haaran alle.

Jos haluat olla todella gurumainen, voit purkaa kaikki paketit
kerralla kyttmll MS-DOS:in FOR-komentoa, nin:

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. Ympristmuuttujan ja hakupolun asettaminen

DJGPP:n ei toimi kunnolla ellei DJGPP-ympristmuuttujaa aseteta.
Tt varten on AUTOEXEC.BAT-tiedostoon listtv seuraava rivi:

SET DJGPP=C:\DJGPP\DJGPP.ENV

Lisksi pit list hakemisto C:\DJGPP\BIN hakupolkuun. Omassa
AUTOEXEC.BAT:issasi on todennkisesti jo PATH-ksky, joka on
suunnilleen tmn nkinen:

PATH C:\DOS;C:\BAT;C:\UTIL

DJGPP:n lismisen jlkeen PATH-komennon pitisi nytt tlt:

PATH C:\DOS;C:\BAT;C:\UTIL;C:\DJGPP\BIN

Jos olet asentanut DJGPP:n johonkin muuhun asemaan ja/tai hakemistoon,
kytt tietysti PATH-komennossa vastaavia tietoja.

Ympristmuuttujassa DJGPP viitataan tiedostoon nimelt DJGPP.ENV.
Tm tekstitiedosto sijaitsee DJGPP-hakemistossa ja sislt trkeit
tietoja, joita ei pid menn muuttamaan ellei tied tarkalleen mit
tekee.


5. CWSDPMI-ohjelman asentaminen

DJGPP kytt DPMI-standardia muistin hallintaan. Muun muassa Windows 95
ja OS/2 sisltvt DPMI-palvelimen, mutta jos kytt DJGPP:t pelkss
MS-DOSissa, sinun pit asentaa CWSDPMI-ohjelma. Se on paketissa
csdpmi3.zip (40 kt).

CWSDPMI asennetaan lismll AUTOEXEC.BAT-tiedoston pern rivi

cwsdpmi -p

Tm asentaa CWSDPMI:n pysyvsti 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 knn ohjelma seuraavalla komennolla:

gcc -o hello1.exe hello1.c

Jos kaikki on kunnossa, et saa mitn ilmoituksia ruudulle. Kun knns
on pttynyt, 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.
Knn ohjelma seuraavalla komennolla:

gcc -o hello2.exe hello2.cc -liostream

Jos kaikki menee hyvin, mitn ilmoituksia ei tule. Aja ohjelma hello2.exe.
Ruudulla pitisi nky sama teksti kuin C-kielist ohjelmaa ajaessa.

Onneksi olkoon! Nyt sinulla pitisi olla toimiva DJGPP.

Jos knnt 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 kyttn.

C++-ohjelmia voi knt mys komennolla gxx, jolloin ei tarvita lainkaan
valitsinta -liostream.


7. MikroBitin C-kurssin esimerkkiohjelmien kntminen

MikroBitiss alkaen numerosta 6-7/1995 julkaistun C-ohjelmointikurssin
esimerkit on testattu DJGPP:ll. Ne kaikki saa ajettavaan muotoon samalla
tavalla, kntmll komennolla

gcc -o ohjelma1.exe ohjelma1.c

DJGPP:n versio 2.0 knt ohjelman suoraan EXE-muotoon. Nin saadaan
tiedosto nimelt ohjelma1.exe, jonka voi ajaa komennolla

ohjelma1

Jos haluat knnksen aikana nytlle listietoja siit mit DJGPP
oikeastaan tekee, voit list knnskomentoon heti gcc:n pern
valitsimen -v ("verbose" eli puhelias).


8. Lismateriaalin asentaminen

DJGPP:hen kuuluu virheenkorjausohjelma eli debuggeri nimelt fsdb,
jonka kytst saa apua painamalla F1-nppint kun ohjelma on kynniss.
Tehokkaampi mutta vaikeaselkoisempi debuggeri on gdb, jonka ohjelmat
ovat paketissa gdb416b.zip (508 kt).

Kaikista GNU-ohjelmista on mys saatavissa lhdekoodi. Jos siis haluat
tutkia miten C- tai C++-kntj tai jokin sen oheisohjelma on tehty,
voit imuroida lhdekoodit MBnetist ja tutustua niihin. Lhdekoodipaketin
nimess on yleens perss olevan b-kirjaimen tilalla s (source), eli
esimerkiksi gcc-kntjn lhdekoodi on tiedostossa gcc2721s.zip.


9. Jik viel kysyttv?

Jos sinulla kaiken tmn jlkeen on viel polttavia DJGPP-ongelmia,
toimi nin:

- Lue ensin DJGPP:n virallinen FAQ-lista, paketissa faq202b.zip.
- Jos ongelma ei ratkea, kysy sit yleisesti MBnetin alueella 8, eli
  PC-ohjelmointi-alueella. Pyydn mit kohteliaimmin: l lhet
  yksityispostia minulle DJGPP-asioissa. Yleisesti kysytyt kysymykset
  auttavat muitakin, ja saat niihin vastauksia nopeammin.
- Jos olet Internet-kyttj, DJGPP:lle omistettu uutisryhm on
  nimeltn comp.os.msdos.djgpp.

Hauskaa ohjelmointia DJGPP:ll!

