Rupesin tässä aloittelemaan uutta projektia, edellisestä oli aikaa jo yli kuukausi, mutta tuli heti ongelmia. Kun käännän koodin komennolla "g++ -c -o a.out code.c" ja koitan ajaa sitä koodilla "./a.out" niin tulee ilmoitus "cannot execute binary file". Mistä tämä voi oikein johtua? Kansion ja tiedostojen oikeudet on kunnossa, ja olen kokeillut kaikkia komentoja myös sudona ja vaikka mitä. En nyt enää keksi mikä voisi olla vialla, joten sanokaapa te. Tässä vielä opastava kuva (low-speed-connection-warning): http://img105.imageshack.us/img105/157/
Pahoittelut otsikosta, en todellakaan ole hyvä keksimään niitä.
Hmm. Ihan mielenkiinosta miksi joudut sudottamaan käännöksen?
Oletko varma että tuottamasi binääri on kunnossa? Mitä sanoo file komemento tuosta tiedostostasi?
No tuon kuvan tapauksessa kokeilin sudoa huvikseni, mutta eipä se ole vaikuttanut asiaan käytänkö sudoa vai en.
Binäärin pitäisi olla kunnossa, olen sitä ennenkin käyttänyt, mutta se oli vain eri kansiossa. File sanoo: code.c: ASCII C program text
EDIT: a.out: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
Eikös -c -vipstaakkeli luo vasta objektitiedoston, ei vielä suoritettavaa ohjelmaa?
Tumpelo kirjoitti:
Kun käännän koodin komennolla "g++ -c -o a.out code.c" ja koitan ajaa sitä koodilla "./a.out" niin tulee ilmoitus "cannot execute binary file". Mistä tämä voi oikein johtua?
Sinulla on mukana -c -vipu. Se tarkoittaa, että lähdekooditiedosto käännetään objektitiedostoksi. Myöhemmin voitaisiin yhdistää useampi objektitiedosto ja tarvittavat kirjatot ajettavaksi tiedostoksi. Jättämällä -c -parametrin pois kääntäjä linkittää (oikeastaan delegoi tehtävän linkkerille) käännetyn tiedoston tarvittavien kirjastojen kanssa ajokelpoiseksi tiedostoksi. Toimiva komento olisi
g++ code.c
eli et tarvitse -o -parametriakann sille g++ tuottaa oletuksena a.out-nimisen tiedoston. -o -parametria tarvitse, jos haluat, että tiedoston nimi on muuta kuin a.out.
Kun en käytä -c vipua, niin kääntäjä valittaa SDL jutuista jotakin (en nyt muista mitä koska olen lukion koneella). Muistaakseni jotain linkityksestä tjsp.
Jos SDL:ää käytät, sun pitää linkittää SDL:n objektitiedostot mukaan binääriin. Anna kääntäjälle parametri -lSDL (tuo toinen merkki siis pieni ällä, ei iso ii).
Ainiin, siinähän se vika oli, en muistanut tuota -lSDL juttua. Kiitoksia avusta!
Aihe on jo aika vanha, joten et voi enää vastata siihen.