GCC-ongelmat

Saku-foorumi » Uusi sukupolvi: MorphOS » Ohjelmointi » Viestit 2005 » GCC-ongelmat « Edellinen Seuraava »

Kirjoittaja Viesti
 

JPQ
Sunnuntaina, 30. tammikuuta, 2005 - klo 4.31:   
Mitens debugin saa gccstä pois ? ja miten nopeuden optimoinnin päälle ?
ja siis morphos on alustana.

 

antime
Sunnuntaina, 30. tammikuuta, 2005 - klo 10.18:   
RTFM?

 

Joanna
Sunnuntaina, 30. tammikuuta, 2005 - klo 10.58:   
Yleinen optio käännöksen optimoinnille on: -O#
Eli Iso Oo kirjain ja risuaidan paikalle haluttu optimointimäärän numero (0,1,2,3).

Mutta, ainakin aiemmin (siis siitä on *aikaa*) optimointien päällelaiton jälkeen piti ohjelman toimiminen tarkistaa hyvin perusteellisesti koska optimoinnilla oli paha tapa sotkea koodia.

 

itix
Sunnuntaina, 30. tammikuuta, 2005 - klo 16.38:   
gcc -noixemul -fomit-frame-pointer -O3

Noilla pitäisi selvitä.

 

JPQ
Sunnuntaina, 30. tammikuuta, 2005 - klo 17.50:   
Joanna: hyvä tietää ja toiseksi nyt on nopeus testin käännös kyseessä että voimme kaverin kanssa verrata koneitamme.

antime: sopii toki manuaalin lukukin jos tietää missä se on...

ja headerit jotka lataan on iostream.h, stdio.h, math.h
ja järjestys on tuo. cout temppuilee myös ihan helloworld esimerkin tasoisessa.

PS. minusta ihan lähiaikoina nämä kaksi toimi ok.

 

JPQ
Sunnuntaina, 30. tammikuuta, 2005 - klo 18.36:   
Eli tämä ei käänny:

#include
#include
#include

main()
{
float a;
printf("syötä numero\n");
cin >>a;
printf("%f",floor(a));
}

Tulee tälläiset virheet:
/t/cchQolu8.o: In function `main':
/t/cchQolu8.o(.text+0x26): undefined reference to `cin'
/t/cchQolu8.o(.text+0x2a): undefined reference to `cin'
/t/cchQolu8.o(.text+0x30): undefined reference to `istream::operator>>(float &)'
collect2: ld returned 1 exit status

PS. olisi kiva päästä erästä ideaa testimään mutta jos luvun lukeminen
käyttäjältä mättää niin siitä ei oikein tule mitään. Tutkinkin
toimiiko tänään edes cout.:)

 

Jupp3
Sunnuntaina, 30. tammikuuta, 2005 - klo 19.11:   
cin ja cout taisivat vaatia conio.h:n (joskus joutui koulussa käyttämään). Itse käytän mielummin printf():ää, suosittelen sinullekin. Niin, ja kannattanee käyttää makefilejä, niin ei joudu joka kerta kirjoittamaan sen enempää kuin make :)

 

JPQ
Sunnuntaina, 30. tammikuuta, 2005 - klo 20.42:   
Jupp3: jaa ja cin ainakin mieleen enempi kuin c tyyli jos floatteja
luen.

 

antime
Sunnuntaina, 30. tammikuuta, 2005 - klo 21.18:   
Kerro vielä miten yrität kääntää tuota. Linkkeri nimittäin tuossa valittaa ettei löydä standardikirjaston funktioita.

 

JPQ
Sunnuntaina, 30. tammikuuta, 2005 - klo 23.18:   
ohjelman lähdekoodin hakemistossa tyyliin gcc muumi.cpp. tähän asti
toiminut ok.

 

antime
Sunnuntaina, 30. tammikuuta, 2005 - klo 23.31:   
Käytä mieluummin g++:aa C++-koodin kääntämiseen, se mm. linkittää automaattisesti osan tarvittavista kirjastoista. Muuten sinun pitää itse välittää tarvittavat optiot linkkerille.

 

JPQ
Maanantaina, 31. tammikuuta, 2005 - klo 0.02:   
antime: jostain syystä ei näyttänyt olevan kokeiluni mukaan vaikutusta
virheisiin.

 

Palle
Maanantaina, 31. tammikuuta, 2005 - klo 7.16:   
-lstdc++ vipu mukaan.

 

Jupp3
Maanantaina, 31. tammikuuta, 2005 - klo 11.05:   
hmm... Eikös g++ vaatinut jonkun päivityksen SDK:hon?

 

JPQ
Maanantaina, 31. tammikuuta, 2005 - klo 14.08:   
Jupp3: täysin toimiaikseen kait? mutta nuo toimi vielä minusta jokin aikaa sitten. Ja en ole tuohon ohjeita saanut olen kyllä kysynyt eräältäkin asianomaiselta jonka tiedän varmasti MorphOS koodaavan. Nimen saatte arvata itse.

 

Jon
Maanantaina, 31. tammikuuta, 2005 - klo 15.09:   
JPQ: koitas laittaa include-rivien jälkeen:

"using namespace std;", ilman sitaatteja toki.

Tai sitten käyttää cin/coutia näin: std::cin, std::cout...

nipotusmoodi päälle: itse asiassa tuo on linkkerin virhe, ei kääntäjän :)

Ja ehdottomasti käytä g++:aa, kuten jo muutkin totesivat.

 

JPQ
Maanantaina, 31. tammikuuta, 2005 - klo 15.22:   
Jon: nipottaa saa muttei minulle eli en tiennyt ja tuo oikomista
nipotus on se että pilkkaat minut maan rakoon haukkuen samalla kun
kerrot asian oikean laidan.
PS. täytyy noita ideoitasi kokeilla mutta olisi kiva silti käyttää cin
ja cout juttuja niinkuin moni muu käyttää sattuneista syistä. Eli
valmis koodin,esimerkkien ja jos teemme kaverin kanssa koodin
vaihtoa.:)
Eli jotain mättää jossain mutta mitä?

 

Jon
Maanantaina, 31. tammikuuta, 2005 - klo 15.34:   
JPQ: no näytäs sitten esimerkki miten joku käyttää cin/coutia? Tuo nimiavaruus on määriteltävä, eli se ei ole ihan oma "ideani" :)

 

antime
Maanantaina, 31. tammikuuta, 2005 - klo 15.36:   
Jon, jos käyttää .h-päätteisiä yhteensopivuusheadereitä kuten JPQ tuolla ylhäällä kertoo käyttävänsä niin ei tarvitse välittää std-nimiavaruudesta. Virheilmoitus olisi myös toisenlainen eikä koodi menisi linkkerille asti.

 

Jon
Maanantaina, 31. tammikuuta, 2005 - klo 16.37:   
I stand corrected.

 

Jon
Maanantaina, 31. tammikuuta, 2005 - klo 16.54:   
Tosin kannattaisi ehkä käyttää standardin mukaisia header-tiedostoja. Ilmeisesti nuo .h-päätteiset ovat jo melko vanhaa kauraa.

http://www.devx.com/tips/Tip/14447

 

Palle
Maanantaina, 31. tammikuuta, 2005 - klo 19.12:   
gcc muumi.cpp -lstdc++

Eli standardi c++ kirjasto pitää linkittää mukaan, että linkkeri löytää tuon cin:in.

Ja tosiaan noita vanhan tyylisiä headereita kannattaa välttää.

 

JPQ
Maanantaina, 31. tammikuuta, 2005 - klo 21.14:   
Palle: eikös g++een pitäisi löytää se suoraan sekin valittelee minusta
kun tässä näitä kokeilin.

 

Frn
Perjantaina, 18. maaliskuuta, 2005 - klo 13.23:   
Törmäsin vastaavanlaiseen ongelmaan SDK:n kanssa, eli linkkerillä on ongelmia c++:n kanssa: "undefined refernce to cout". Kokeilin noita täältä löytämiä vinkkejä, mutta sama tulos.

Tarvitsiko siis SDK jonkin päivityksen kuten mainittiin vai selviääkö joillain optioilla?

 

Jon
Lauantaina, 19. maaliskuuta, 2005 - klo 12.22:   
Frn: mikä SDK?

OS4:n SDK:lla toimii ainakin. Julmetun iso exe tulee vain :/

 

itix
Lauantaina, 19. maaliskuuta, 2005 - klo 13.41:   
Höh? Täällä ainakin toimii.

g++ -noixemul test.cpp -lstdc++

Tuolla tuo JPQ:n koodi kääntyi suoraan. Binääristä tulee kyllä melko iso (165K) mutta sille ei oikein voi mitään.

 

Frn
Lauantaina, 19. maaliskuuta, 2005 - klo 16.27:   
Jon: MOS SDK on kyseessä.

itix: Kokeilin vastaavia jo aiemmin, mutta päätin kokeilla hieman lisää
---
> g++ -noixemul hello.cpp -lstdc++
[tässä vaiheessa odottelun jälkeen enteriä, kun mitään ei tapahdu]

/gg/ppc-morphos/bin/ld: cannot open -lstdc+: No such file or directory
collect2: ld returned 1 exit status
---

Eli jostain syystä viimeinen "+" tipahtaa tajunnasta. Pistinpä nyt kokeeksi spacen tuonne komentorivin loppuun ja homma toimi niinkuin pitikin. Hyviä arvauksia miksi näin käy?

HelloWorldista tuli 491784 tavuinen, joten ei milään keijukainen. Ilmeisesti koko on pakollinen paha?

Heh. Tietysti tällaiset ongelmat sattuvat juuri kun olisi hirveä kiire. Mr. Murphy oli sen verran huolimaton, että sain eilen homman tehtyä jopa 10min ennen kun sen piti olla valmis.

Kiitoksia kovasti vinkeistä, niistä oli apua, vaikka ongelma olikin tällä kertaa erikoinen.

 

itix
Lauantaina, 19. maaliskuuta, 2005 - klo 17.12:   
Tuo "+" viimeisenä kirjaimena on joku AmigaShellin ominaisuus mutta en kyllä muista mikä. Joka tapauksessa jos kirjoitat kolme plusmerkkiä kahden sijaan se toimii ok. Riippuu myös Shellistä sillä MUICON:ssa (omilla asetuksillani) viimeistä plusmerkkiä ei tiputeta pois.

Exen saa pienemmäksi strippaamalla:
strip --remove-section=.comment alkuperäinen -o uusi-stripattu

Kannattaa aina säilyttää strippaamaton binääri debuggausta varten.

 

Frn
Lauantaina, 19. maaliskuuta, 2005 - klo 19.24:   
itix: enpä ole tuohon aiemmin törmännyt ja shellin feature tuli mieleen vasta kun tarkemmin katsottuani se viimeinen plussa sieltä puuttui. Aiemmin käyttämäni g++ variantti osasi myös automaagisesti linkata nuo libit. Täytyy kai laittaa tuo muicon vakituiseen käyttöön, mikäli siitä ei mitään isompia haittoja aiheudu.

stripillä HelloWorld meni 147060 tavuun, eli ei mitään bootblock-tavaraa vieläkään. Vähän auttaa silti.

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: