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

                 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 p„ivitetty 30.12.1997 - Markus Halttunen)

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

-----------------------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)
faq210b.zip   DJGPP FAQ v2.02: yleisimm„t kysymykset ja vastaukset niihin
djdev201.zip  DJGPP:n k„ytt””n tarvittava peruspaketti, v2.01
bnu281b.zip    Binutils v2.7: erilaisia olennaisia apuohjelmia
gcc2721b.zip  GNU C -k„„nt„j„ v2.7.2.1
gpp2721b.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
csdpmi4b.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„!

