Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Tuomas_M - 17.06.06 - klo:10.28

Otsikko: gcc-4.0:n käyttö
Kirjoitti: Tuomas_M - 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?
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: janne - 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.

Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: Tuomas_M - 17.06.06 - klo:12.37

oletko asentanut paketin build-essential?

Olen, mutta en tiedä miten saan siitä irti noita headereita..?
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: janne - 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.
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: Tuomas_M - 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.
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: janne - 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?
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: Tuomas_M - 17.06.06 - klo:12.50

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

gcc-4.0 test.cpp
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: janne - 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.
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: Tuomas_M - 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?
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: janne - 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.
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: Tuomas_M - 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?
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: tn - 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...
Otsikko: Re: gcc-4.0:n käyttö
Kirjoitti: janne - 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.
Otsikko: Vs: gcc-4.0:n käyttö
Kirjoitti: eelis - 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
Otsikko: Vs: gcc-4.0:n käyttö
Kirjoitti: eelis - 10.02.07 - klo:11.25
ainiin unohtui tossa sanoa, että oon ladannu sen build-essentialjutskan-.
Otsikko: Vs: gcc-4.0:n käyttö
Kirjoitti: janne - 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.
Otsikko: Vs: gcc-4.0:n käyttö
Kirjoitti: eelis - 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...