Kirjoittaja Aihe: gcc-4.0:n käyttö  (Luettu 6370 kertaa)

Tuomas_M

  • Käyttäjä
  • Viestejä: 30
    • Profiili
gcc-4.0:n käyttö
« : 17.06.06 - klo:10.28 »
Siirryin vasta Linuxiin, ja nyt pitäisi päästä ohjelmoimaan. Windowsilla käytin vain Dev-C++:aa, joten komentorivipohjaisen kääntäjän käyttäminen on vielä vähän hukassa. Tiedän kuinka tiedosto käännetään, mutta jos minulla on tiedosto jossa käytän vaikkapa iostream.h kirjastoa, niin miten saan sen toimimaan? Pitääkö minun ensin jostain hakea se iostream.h?

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #1 : 17.06.06 - klo:12.32 »
Siirryin vasta Linuxiin, ja nyt pitäisi päästä ohjelmoimaan. Windowsilla käytin vain Dev-C++:aa, joten komentorivipohjaisen kääntäjän käyttäminen on vielä vähän hukassa. Tiedän kuinka tiedosto käännetään, mutta jos minulla on tiedosto jossa käytän vaikkapa iostream.h kirjastoa, niin miten saan sen toimimaan? Pitääkö minun ensin jostain hakea se iostream.h?

no, kyllä kai se pitää hakea jos ei sitä ole asennettu. oletko asentanut paketin build-essential? sillä saa aika paljon kääntämiseen liittyvää kamaa asennettua. samoin eri kirjastojen headerit ovat paketeissa joiden nimissä on -dev. nuo c++:n headerit ovat ainakin paketissa libstdc++6-4.0-dev, jossa nuo kaksi viimeistä numeroa viittaavat kääntäjään ja niitä edeltävä versioon.

vaikka komentoriviltä kääntämisen (ja mekifilejen) niksien opettelu ei olekaan huono idea, niin linuxille löytyy kyllä jonkinliasia idejä. gnome-puolella anjuta on ihan kiva ja kde-puolelle on tietty kdevelop. kummallekin ympäristölle on vielä olemassa ohjelmat GUI-ohjelmien käyttöliittymien luomiseen kliksuttelemalla.

Janne

Tuomas_M

  • Käyttäjä
  • Viestejä: 30
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #2 : 17.06.06 - klo:12.37 »

oletko asentanut paketin build-essential?

Olen, mutta en tiedä miten saan siitä irti noita headereita..?

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #3 : 17.06.06 - klo:12.39 »

oletko asentanut paketin build-essential?

Olen, mutta en tiedä miten saan siitä irti noita headereita..?

mitenkäs sen paketin libstdc++6-4.0-dev kanssa.
Janne

Tuomas_M

  • Käyttäjä
  • Viestejä: 30
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #4 : 17.06.06 - klo:12.42 »

oletko asentanut paketin build-essential?

Olen, mutta en tiedä miten saan siitä irti noita headereita..?

mitenkäs sen paketin libstdc++6-4.0-dev kanssa.

Asennettu on.

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #5 : 17.06.06 - klo:12.47 »
mitenkäs sen paketin libstdc++6-4.0-dev kanssa.

Asennettu on.

ja vieläkään ei löydy headereita?

millä komennolla yrität kääntää sovellusta?
Janne

Tuomas_M

  • Käyttäjä
  • Viestejä: 30
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #6 : 17.06.06 - klo:12.50 »

millä komennolla yrität kääntää sovellusta?

gcc-4.0 test.cpp

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #7 : 17.06.06 - klo:12.56 »

millä komennolla yrität kääntää sovellusta?

gcc-4.0 test.cpp

jep, siis gcc on etupäässä c-kääntäjä (siis ottaa oletuksena mukaan c-ohjelmia varten tarkoitetun ympäristön) ja vaikka se osaakin kääntää c++-koodia, niin se ei ota mukaan c++:n ympäristöä oletuksena. toki ympäristön voi luoda antamalla sille eriliaisia komentoriviparametreja, mutta helpompaa on vamrasti käyttää kääntämiseen komentoa g++ joka käyttää gcc:tä automaattisesti oikeassa ympäristössä.

tosiaan ensimmäisestä kysymyksestä tulikin vielä mieleen, että nykyäänhän (oikeastaan jo aika pitkän) c++:ssa käytetään headereita ilman  tuota .h-päätettä ja vanhat .h-päätteelliset ovat mukana vain taksepäin yhteensovuuden vuoksi eikä niitä suositella käytettäväksi uudessa koodissa.
Janne

Tuomas_M

  • Käyttäjä
  • Viestejä: 30
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #8 : 17.06.06 - klo:13.00 »
Kas, tuolla g++ komennolla alkoi toimimaan. Mutta, kun en ole ehtinyt Linuxiin kovin perehtyä niin en nyt tiedä miten tuo .out päätteinen tiedosto saadaan käynnistymään?

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #9 : 17.06.06 - klo:13.06 »
Kas, tuolla g++ komennolla alkoi toimimaan. Mutta, kun en ole ehtinyt Linuxiin kovin perehtyä niin en nyt tiedä miten tuo .out päätteinen tiedosto saadaan käynnistymään?

oletuksena linuxissa suoritetaan vain polun varressa olevia ohjelmia, muita suoritettaessa täytyy antaa suoritettava ohjelma polkuinen. onneksi myös suhteellinen polku käy, joten samassa hakemistossa oltaessa voidaan komentoaa ./a.out jossa siis . on tarkoittaa nykyistä hakemistoa.

tosin jos kääntäjälle antaa parametriksi -o nimi niin käännöksen lopputulos on nimi eikä a.out. samalla tavalle sekin tosin ajetaan.
Janne

Tuomas_M

  • Käyttäjä
  • Viestejä: 30
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #10 : 17.06.06 - klo:13.59 »
Kas, tuolla g++ komennolla alkoi toimimaan. Mutta, kun en ole ehtinyt Linuxiin kovin perehtyä niin en nyt tiedä miten tuo .out päätteinen tiedosto saadaan käynnistymään?

oletuksena linuxissa suoritetaan vain polun varressa olevia ohjelmia, muita suoritettaessa täytyy antaa suoritettava ohjelma polkuinen. onneksi myös suhteellinen polku käy, joten samassa hakemistossa oltaessa voidaan komentoaa ./a.out jossa siis . on tarkoittaa nykyistä hakemistoa.

tosin jos kääntäjälle antaa parametriksi -o nimi niin käännöksen lopputulos on nimi eikä a.out. samalla tavalle sekin tosin ajetaan.

Okei, entä miten ohjelman saa asennettua niin, että se käynnistyy ihan komentoriviltä vaikka komennolla myprogram?

tn

  • Käyttäjä
  • Viestejä: 472
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #11 : 17.06.06 - klo:14.34 »
Tiedän kuinka tiedosto käännetään, mutta jos minulla on tiedosto jossa käytän vaikkapa iostream.h kirjastoa, niin miten saan sen toimimaan? Pitääkö minun ensin jostain hakea se iostream.h?
Jos C++:lla koodaat, älä käytä vanhentunutta iostream.h -headeria vaan sen tilalta pelkkää iostream:ia. Sama koskee kaikkia standardikirjaston ja STL:n otsikkotiedostoja (fstream, cstdio, cstdlib, cmath, string, iomanip, ...).

Okei, entä miten ohjelman saa asennettua niin, että se käynnistyy ihan komentoriviltä vaikka komennolla myprogram?
Sijottamalla sen(tai linkin siihen) johonkin $PATH-muuttujasta löytyvään hakemistoon. Järjestelmänlaajuiset ohjelmat voi sijoittaa esim. /usr/local/bin -hakemistoon. Sen sijaa vain omalle käyttäjälle tarkoitetut joka paikasta suoritettavaksi haluttavat ohjelmat (tai linkki niihin) kannattaa sijoittaa ~/bin -hakemistoon. Jos se on olemassa niin, sen pitäisi ilmeisesti löytyä polusta automaattisesti (minulla ei kyllä löytynyt :( ). Toisaalta jos vain testaamassa ollaan, niin onko tuo kovakaan vaiva kirjoittaa niitä kahta ylimääräistä merkkiä siihen eteen...
« Viimeksi muokattu: 17.06.06 - klo:14.38 kirjoittanut tn »

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Re: gcc-4.0:n käyttö
« Vastaus #12 : 17.06.06 - klo:18.21 »
Jos C++:lla koodaat, älä käytä vanhentunutta iostream.h -headeria vaan sen tilalta pelkkää iostream:ia. Sama koskee kaikkia standardikirjaston ja STL:n otsikkotiedostoja (fstream, cstdio, cstdlib, cmath, string, iomanip, ...).

niin tosiaan, unohtuikin sanoa, että C:stä perytyvät headerit kirjoitetaan ilman .h:ta ja c-etuliitteellä. kuten tuossa tulikin jo cstdio ym. silloin kaikki headereitten funktiot taitavat vielä olla std-nimiavaruudessa.
Janne

eelis

  • Käyttäjä
  • Viestejä: 187
    • Profiili
Vs: gcc-4.0:n käyttö
« Vastaus #13 : 10.02.07 - klo:11.24 »
terve.

Entä tietääkö joku miksi mulla ei ole sellaisia headereita, kun stdio.h, io.h. tai en ainakaan saa
toimimaan outb, inb ja ioperm käskyjä. Onko nyt miehessä vika vai vehkeissä? :)

oon yrittänyt kääntää käskyllä> gcc -O nimi.c -o nimi

eelis

  • Käyttäjä
  • Viestejä: 187
    • Profiili
Vs: gcc-4.0:n käyttö
« Vastaus #14 : 10.02.07 - klo:11.25 »
ainiin unohtui tossa sanoa, että oon ladannu sen build-essentialjutskan-.

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: gcc-4.0:n käyttö
« Vastaus #15 : 10.02.07 - klo:12.18 »
Entä tietääkö joku miksi mulla ei ole sellaisia headereita, kun stdio.h, io.h. tai en ainakaan saa
toimimaan outb, inb ja ioperm käskyjä. Onko nyt miehessä vika vai vehkeissä? :)

onhan sinulla:
Koodia: [Valitse]
#include <stdio.h>
#include <sys/io.h>

tuo io.h on nimittäin tuolla sys-alihakemistossa.
Janne

eelis

  • Käyttäjä
  • Viestejä: 187
    • Profiili
Vs: gcc-4.0:n käyttö
« Vastaus #16 : 12.02.07 - klo:18.30 »
ensinnäkin, kiitoksia vastauksesta.

Niin ja juu kyllä mulla sillä tavalla ne includetukset oli.
Merkillistä kyllä nyt se alkoi toimimaan kun vain annoin kääntämiskomennon
uudestaan. Jokin aika sitten se ei suostunut pelaamaan. Lieköhän syynä ollut
väärä komento vai se, että en käynnistänyt konetta uudelleen, kun olin asentanut
build-essentialin?

no jokatapauksessa, nyt pelaa...