StormC4.0 49.95e

Saku-foorumi » Classic Amiga » Ohjelmointi » Viestit 2003 » StormC4.0 49.95e « Edellinen Seuraava »

Kirjoittaja Viesti
 

TK
Keskiviikkona, 29. tammikuuta, 2003 - klo 20.13:   
Tuommoisen huomasin www.amiga-news.de:ssä eli
StormC4.0 49.95euroa, tuohon hintaan jo kannattaa
laittaa vaikkei koodailisikaan :)

 

JPQ
Keskiviikkona, 29. tammikuuta, 2003 - klo 21.50:   
TK: No kannataisi varmasti jos just olisi rahaa. Ja onko tuo uuden hinta jos on mitähän se kohta Boogiella maksaa?

 

Jupp3
Torstaina, 30. tammikuuta, 2003 - klo 11.26:   
No, itse koodaan GCC:llä kun moisen onnistuin asentamaan :)

Grafiikkaakin saan ruudulle, niin miksi nyt vaihtamaan... Periaatteessahan kääntäjä on sama, mutta StormC:ssä on vain graafinen käyttöliittymä...

Mut ei se nyt vaikeaa ole kirjoittaa gcc hello.c :)

Btw, oliko muuten joku opiskelijatarjous tms.? Eivätkös joskus semmoista kaupanneet...

 

miksuh
Torstaina, 30. tammikuuta, 2003 - klo 14.04:   
Jupp3: No ei ole joo :) Ja makefilet auttaa sit isommissa, useista tiedostoista koostuvissa, projekteissa.

 

Jani Kuituniemi
Torstaina, 30. tammikuuta, 2003 - klo 15.52:   
GCC:tä itsekin käytän.. onko jossain jotain ohjeita siihen miten tommosia Makefilejä tehdään?

 

Jon
Torstaina, 30. tammikuuta, 2003 - klo 16.20:   
Maken mukana :) Tietenkin kannata katsoa mallia open-source projekteista (esim. AmiBlocks, heh heh)

 

JPQ
Torstaina, 30. tammikuuta, 2003 - klo 17.45:   
Jupp3: ei ole vaikeaa kirjoittaa gcc hello.c olet oikeassa mutta muuten tuota GCC:tä en saanut tapeltua aikoinani vaikka sain sairaan hyvät neuvot käyttökuntoon.

 

miksuh
Torstaina, 30. tammikuuta, 2003 - klo 20.08:   
No okei makefileen kirjotuksen lyhyt oppimäärä, 1ov :) Makefile tiedostot vaihtelee melkosesti hyvin yksinkertasesta hyvin monimutkaseen. Ihan aluksi, jos ei ole ennen noita kirjottanu, ei kannata edes yrittää muutakun ymmärtää makefileen perusrakenne.
Muutamalla perusasailla pääsee oikein hyvin alkuun. Sitten kokemuksen lisääntyessä voi mennä pidemmälle ja viilata makefilejä hienommiksi.

Tässä on nyt ykssinkertanen esimerkki makefileestä, joka kääntää ja linkkaa kolmen tiedoston projektin
. Projektissa on siis tiedostot:

make.c file1.c file2.c

Lisäksi on headerifileet:

file1.h file2.h

Makefileen alussa määritellään käytetyt muuttujat.

CPU = CPU jolle koodi käännetään
CC = käytettävä kääntäjä
LD = käytettävä linkkeri
RM = fileiden delotointikomento
PROG = luotavan lopullisen exen tiedostonimi
OBJS = lista projektin objekti-tiedostoista
OPTFLAGS = optimointiflagit
CFLAGS = kääntäjälle annettavat optiot
LDFLAGS = linkkerille annettavat optiot

Muuttujien määrittelyjen jälkeen seuraa joukko sääntöjä (rules) joiden perusteella tiedostot käännetään ensin objekti-tiedostoiksi. Lisäksi on
yksi sääntö joka kuvaa miten objektitiedostot linkataan exeksi. Ja sääntö, joka kuvaa miten objektitiedostot poistetaan hakemistosta. Viimeisin sääntö ei ole välttämätön.

Jokainen sääntö koostuu kohteesta, siitä mitkä tiedostot vaikuttaa siihen esim käännetäänkö kohde ja säännön toiminnan kuvauksesta. Eli

main.o: on säännön nimi(kohde) joka kuvaa miten
main.o-objektifile luodaan.

Samalla rivillä olevat .c ja .h fileet kertoo make:lle mitkä tiedostot vaikuttaa siihen luodaanko uusi main.o. Eli mikäli jokin tuossa listattu .c tai .h file on uudempia kuin main.o niin sääntö suoritetaan ja main.o luodaan uudestaan. Eli nuo määritellyt fileet määritelee ehdon sille suoritetaanko sääntö vai ei.

Rivi $(CC) $(CFLAGS) -c main.c kuvaa miten main.o luodaan. Eli tuo rivi suoritetaan kun sääntösuoritetaan.

Kun tuo makefile on talletettu riittää että annetaan komento:

make tai make all


Mulla loppuu kohta aika kesken, kun koulu menee kii joten toi on kirjotettu ulkomuistista ja suht kiireessä, eli siinä voi olla puutteita ja virheitä. Mut katotaan vaikka huomena sit enempi tota.


---

CPU = -m68020
OPTFLAGS= -O2
CFLAGS =-I. -I./includes $(CPU) $(OPTFLAGS)
LDFLAGS = -noixemul

CC = gcc
LD = gcc
RM = /bin/rm -f
PROG = MyApp
OBJS = main.o file1.o file2.o

all: $(PROG)

$(PROG): $(OBJS)
$(LD) $(LDFLAGS) $(OBJS) -o $(PROG)

main.o: main.c file1.h file2.h
$(CC) $(CFLAGS) -c main.c

file1.o: file1.c file1.h
$(CC) $(CFLAGS) -c file1.c

file2.o: file2.c file2.h
$(CC) $(CFLAGS) -c file2.c

clean:
$(RM) $(PROG) $(OBJS)

---

 

miksuh
Torstaina, 30. tammikuuta, 2003 - klo 20.09:   
Äh tossa piti toki olla välilyöntejä/tabulaattoreita sisennyksenä.. Ne ei nyt tietty sit näkyny.

 

miksuh
Torstaina, 30. tammikuuta, 2003 - klo 20.11:   
make.c == main.c tottakai :)

 

miksuh
Torstaina, 30. tammikuuta, 2003 - klo 20.19:   
GNU make osaa kaikkea kivaa, kuten automaattisen riippuvuksien (dependency) generointi jne, mutta niihin ei kannata puuttua ennenkun makefileen perusidea on hanskassa.

 

Jani Kuituniemi
Torstaina, 30. tammikuuta, 2003 - klo 20.26:   
miksuh: kiitos.. tuo selvensi :)

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: