Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Kääntäjistä (pitkä tarina)

FinTree [13.04.2003 23:52:28]

#

C-kääntäjistä

Ohessa on muutama kommentti ilmaiseksi saatavista kääntäjistä. En ole testannut jokaista, joten arviot eivät välttämättä ole neutraaleja. Tarkoitus on tuoda esille kääntäjävaihtoehtoja niille, jotka eivät tiedä mistä niitä löytyy. Järjestys on tietyssä mielessä looginen mutta ei kuvaa järjestelmien hyvyyttä tai niiden suosiota. Kommentit ovat tietysti tervetulleita.

1.

Olen käyttänyt djgpp useamman vuoden minkä vuoksi tämä kohta on muita pitempi.

djgpp on gnu c:n perustuva "kääntäjä", jolla voidaan luoda DOSissa toimivia ohjelmia. Kokonaisuutta kehitetään vielä melko aktiivisesti ja djgpp osiosta tulee uusi versio joko tänä tai ensi vuonna. Sen sijaan varsinainen kääntäjä päivittyy jatkuvasti djgpp-osiosta riippumatta. Tuettuja kieliä ovat muun muassa c, c++ ja fortan. En tiedä mikä on mm. adan ja pascalin nykytilanne. Java ei ole vielä saatavilla.

Yllä olevan perusteella djgpp ei ole pelkkä kääntäjä vaan mukana tulee monia työkaluja, jotka ovat käytössä linux ja unix järjestelmissä. Sen vuoksi on syytä seurata asennusohjeita. Näillä sivuilla on eräs esimerkki djgpp:n asentamisesta, joka lähinnä muistuttaa vuoden 2001 tilannetta. Suosittelen, että version 295 tiedostojen sijasta käytetään version 3xx tiedostoja.

Ensiasennus on syytä tehdä kotisivujen http://www.delorie.com/djgpp/ avustuksella (katso zip picker, mukana tulee vain välttämättömät osiot). Päivitykset saa nopeammin Suomesta mm. funetin sivulta ftp://nic.funet.fi/pub/mirrors/ftp.cdrom.com/pub/simtelnet/simtelnet/gnu/djgpp

Uutisryhmän mukaan djgpp järjestelmää kopioidaan vielä yhtä paljon kuin aikaisempina vuosina mutta uutisryhmän sivuilla keskustelu on vaimentunut huomattavasti viime vuosista.

Ongelma tapauksissa on syytä käyttää (mukana tulevaa) info-järjestelmää ja lukea FAQ vaikka sitä ei ole päivitetty pariin vuoteen. Infossa on esitetty mm. miten kääntäjää käytetään ja mitkä funktiot ovat saatavilla (=api) sekä lyhyitä esimerkkejä miten funktioita käytetään.

Huomaa, että djgpp:ssä ei ole omaa IDEä. Asennusohjeissa suositellaan Rhideä.

Kääntäjästä sen verran, että gcc tunnistaa tiedostonimen lopun perusteella onko kyseessä c, c++, fortran, ada, pascal, asm, ... ohjelma. Esimerkiksi pieni c viittaa c-ohjelmaan, iso C ja cpp vastaavasti c++-ohjelmaan. Samanlaisia "ongelmia" saattaa esiintyä myös muiden kääntäjien kanssa.

2.

Koska djgpp ei tue windows-ohjelmointia, on siihen kehitelty "add-on", jonka avulla ohjelmointi on mahdollista. Tosin kyseisen lisuke RSXNTDJ1.5 (tai RSX) ei toimi nykyisen kääntäjän (versiot 3.x) kanssa ilman muutoksia, jotka ovat aloittelijalle "mahdottomia". En siis suosittele sen kokeilemista (jos joku kokeilee niin kertokaa onko tarvittavat päivityksen tehty). Lisukkeen uudempi versio (1.6) löytyy rsx:n ohjelmoijan kotisivuilta (http://www.mathematik.uni-bielefeld.de/~rainer) mutta viimeisin versio on vuodelta 2000, joten sekään ei toimi ilman muutoksia. Kuulemma jotkut ovat käyttäneet RSXNTDJ sijasta MINGW mutta siitä en osaa kertoa mitään.

3.

djgpp:stä ei virallisesti ole kehitetty windows-versio ehkä osittain sen takia, että osa kehittäjistä oli kehittämässä Cygwin-järjestelmää: http://www.cygwin.com

En ole tätä käyttänyt (testasin joskus beta-versiota), joten ei muuta kommenttia kuin yritys, jota sitä alunperin kehitti, ei kehitä sitä enää. Nykyinen kehitys tapahtuu vapaaehtoisvoimin. Siten linkki voi vanhenta.

Luonnollisesti Cygwiniin pätee suunnilleen kaikki se mikä tuli mainittua djgpp:n kohdalla, koska kumpikin perustuu gnu-organisaation ohjelmiin.

4.

Jo kertaalleen mainittu MINGW (http://www.mingw.org) on oikeastaan osa Cygwinistä siten, että Cygwinin "massiivinen" dll-tiedosto korvataan windowsin mukana tulevilla dll-tiedostoilla. MINGW käytetään nykyisin laajalti mutta en osaa verrata sen suosiota Cygwiniin. Mainitun dll-tiedoston takia Cygwinillä ei voi tuottaa ns. "stand alone" ohjelmia eli ohjelmia, jotka toimivat ilman dll-tiedostoa. MINGWssä tämä ongelma on kierretty.

Jos dll-merkitys ei ole selvä, niin yksi esimerkki. Jos ohjelmasi koko on esimerkiksi 100 kb niin joudut sen lisäksi jakelemaan dll-tiedostoa, jonka koko on useita megabittejä, jos käytät Cygwin järjestelmää.

Kuuleman mukaan MINGW mukana ei tule työkaluja vaan niitä pitää etsiä ympäri nettiä. En tunne yhtään linkkilistaa, joten vinkit ovat tervetulleita.

5.

Koska MINGW mukana ei tule IDE-järjestelmää, paketointi jatkuu niin, että näillä sivuilla usein mainittu DEV-C++ (http://www.bloodshed.net/devcpp.html) puolestaan perustuu (esimerkiksi) MINGW. En ole käyttänyt kumpaakaan, joten en tiedä tukevatko ne todella c++ kieltä (tarkoitan windows ohjelmointia) vai ainoastaan c-kieltä. Vastaavasti ei ole tietoa mukana tulevista kehitystyökaluista. www-sivujen mukaan DEV-C++ on saatavilla tuki Delphille.


6.

Vähemmän tunnettu mutta melko kauan kehitetty järjestelmä, joka ei perustu gnu c:n, on LCC: http://www.cs.virginia.edu/~lcc-win32

Olen vähän kokeillut tätä silloin tällöin mutta yleensä käytän djgpp+rsxntdj järjestelmää. Vaikea sanoa kumpi on parempi mutta kuulemma lcc tukee c++ kieltä c:n ja fortranin lisäksi (en kirjoita c++-ohjelmia). Tosin www-sivuilla ei ole mainintaa c++. Lcc:n mukana tulee tarvittavat perustyökalut, joten suosittelen sen testaamista.

LCC mukana tulee windowsin api. Vastaavanlainen vanhempi versio on saatavissa Ecman (http://www.ecma-international.org/) sivuilta (vuodelta 1995: numero 234 osat 1-3) pdf-muodossa.

7.

Aikanaan Watcon oli yksi neljästä merkittävästä kääntäjästä. Tästä tuli vuonna 2003 avoin versio, openwatcom: (http://www.openwatcom.org) josta on riisuttu osa alkuperäisestä koodista. En ole kokeillut, joten en tiedä kuinka paljon siinä on lastentauteja. Mukana tulee IDE, joka kuulemma on karmea (testasin viime syksyistä beta versiota ....). Tällä kääntäjällä pitäisi pystyä luomaan ainakin c, c++ ja fortran ohjelmia. Varmaan tutustumisen arvoinen, jos on aloittamassa ohjelmointia siinä mielessä, että asennus saattaa olla helpompi kuin monessa muussa tapauksessa (toivottavasti käytössäsi on laajakaistayhteys ...).

8.

Toinen henkiin herätetty kääntäjä on Digital mars: (http://www.digitalmars.com) jolla www-sivujen mukaan voi luoda c ja c++ ohjelmia. En tiedä tästä sen enempää.

9.

Eräs tunnetuimmista kääntäjistä on Borland (http://www.borland.com) josta kuulemma on saatavilla jonkinlaisen ilmainen versio mahdollisesti rekistöröintiä vastaan. En tiedä onko kyseessä ns. turbo-c kääntäjä. Jos kyseessä on turbo-c, niin sillä ei voi luoda windows ohjelmia.

Huom 1!

Jos testaat eri kääntäjiä niin ota huomioon, että mikään ei välttämättä toimi kunnolla, jos olet asentanut enemmän kuin yhden kääntäjän. Poista muut tai ainakin nimeä hakemistot niin ettei kääntäjiin liittyviä tiedostoja voi käyttää mistä tahansa hakemistosta.

Huom 2!

c ja c++ kääntäjät noudattavat huonosti standardeja ja niinpä yhdellä kääntäjällä kääntyvä tiedosto ei välttämättä käänny ongelmitta muilla kääntäjillä. Kohtaamasi ongelmat eivät siten välttämättä johtu kääntäjästä vaan voivat johtua tiedostosta, jota yrität kääntää.

Huom 3!

Useimmat edellä mainituista kääntäjistä tuottavat sekä konsoliohjelmia (vastaa DOS ohjelmaa) että windows ohjelmia. djgpp poikkeaa tässä mielessä muista kääntäjistä. Aloittelijalle konsoliohjelma on parempi ratkaisu kuin graafisia komponentteja (painikkeet, ikkunat, ...) sisältävät ohjelmat.

Jos kaipaat lisää tietoa kääntäjistä, niin vilkaise seuraavia sivuja:

http://www.compilers.net/Dir/Free/Compilers/CCpp.htm
http://www.parashift.com/c -faq-lite/compiler-dependencies.html
http://www.bloodshed.net/compilers

Parempiakin sivuja saattaa olla olemassa ...

Lopuksi vielä pari linkkiä, jotka kiinnostavat lähinnä linuxin käyttäjiä. On olemassa pari projektia, joissa pyritään luomaan linuxiin järjestelmä, jonka avulla voidaan ajaa windows ohjelmia (ei siis crosscompiler juttuja). Näistä ensimmäinen, wine (http://www.winehq.com) on aktiivisen kehityksen alla. Toinen on twin (http://www.willows.com) jonka kehitys on lopetettu pari vuosi sitten.

thefox [14.04.2003 10:24:56]

#

Ikäviä asia- ja kirjoitusvirheitä paikoittain. Mutta eipä siinä, kiva pieni aloittelijoilla suuntaa antava teksti.

mikko [14.04.2003 17:35:14]

#

..jonka voisi kai sijoittaa mieluummin tuonne oppaisiin hieman muunneltuna?

Jesoft [14.04.2003 17:41:00]

#

jaa...enpä oikein tiedä mitä sanoa

mikko [14.04.2003 18:44:48]

#

No se on sellainen tilanne, että silloin ei passaa sanoa mitään.

mikaza [14.04.2003 22:06:39]

#

lainaus:

Eräs tunnetuimmista kääntäjistä on Borland (http://www.borland.com) josta kuulemma on saatavilla jonkinlaisen ilmainen versio mahdollisesti rekistöröintiä vastaan. En tiedä onko kyseessä ns. turbo-c kääntäjä. Jos kyseessä on turbo-c, niin sillä ei voi luoda windows ohjelmia.

Lisäys tähän, ilmainen versio on Borland C++ 5.5, ei turbo-c, eli sillä voi kääntää Windows-ohjelmia. Sama kääntäjä jota C++Builder 5 käyttää.

http://www.borland.com/products/downloads/download_cbuilder.html

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta