Mulla on valmis sorsa game.cpp ja siihen liittyvä kirjasto gameapi.a
Mukana tulleen ohjeen mukaan sen pitäisi kääntyä seuraavalla komennolla:
g game.cpp -o game gameapi.a -lsocket -lnsl -I.
(Tuo viimeinen on iso i-kirjain ja pari muuta ovat pieniä L-kirjaimia. Ne jotka tekee näiden koneiden fontteja, niin ne voisi ampua kun I ja l ovat ihan saman näköisiä monessa koneessa.)
Ei kuitenkaan käänny, vaan saan seuraavan virheen:
/usr/bin/ld: cannot find -lsocket
collect2: ld:n paluuarvo oli 1
Missä vika?
gameapi.a löytyy hakemistosta "piste" eli tämä hakemisto ja löytyy myös /usr/bin/socket ja /usr/bin/ld
Mukana tulleen ohjeen mukaan sen pitäisi kääntyä seuraavalla komennolla:
g game.cpp -o game gameapi.a -lsocket -lnsl -I.
(Tuo viimeinen on iso i-kirjain ja pari muuta ovat pieniä L-kirjaimia. Ne jotka tekee näiden koneiden fontteja, niin ne voisi ampua kun I ja l ovat ihan saman näköisiä monessa koneessa.)
Ei kuitenkaan käänny, vaan saan seuraavan virheen:
/usr/bin/ld: cannot find -lsocket
collect2: ld:n paluuarvo oli 1
Missä vika?
gameapi.a löytyy hakemistosta "piste" eli tämä hakemisto ja löytyy myös /usr/bin/socket ja /usr/bin/ld
Vastaukset 12
Vanhimmat
/usr/bin kansiossa ei kyllä ole Ubuntussa mitään socket kirjastoa, eikä pitäisikään olla.
Eli vikana on se, että tuollainen kirjasto puuttuu.
Luulen, että koko saatu paketti on muutenkin vajavainen. Pistin palautetta "sorsan" toimittajalle.
joo. Kyllä vähintään Makefile pitää olla.
Käännöksen voi tehdä myös ilman makefileä komentoriviltä.
Se on ihan käyttökelpoinen tapa jos tiedostoja on vain muutama.
Jos homma menee makefilen kautta, niin komento on "make" eikä "g ...."
Voihan sen tehdä mutta kun jakaa sorsia niin se on minimivaatimus. Omassa kääntelyssäkin kannatta opetella käyttämään makea.
Älä opeta isääs naimaan. Olen tehnyt koodia ammatikseni yli 30 vuotta, joskin Linuxiin vasta muutaman vuoden. Olen tehnyt myös softaa, joka tekee automaattisesti makefilen järjestelmän määrittelytiedostoista.
Käy lataamassa sivulta http://www.sonera.fi/yrityksille/tuotteet ja palvelut/liiketoiminta ja tukipalvelut/palveluntarjoajille/content gateway jompi kumpi noista Linux paketeista. Sen jälkeen voit valittaa Soneralle, että make on minimivaatimus.
Tuo esimerkin "game" tai oikeammin "numbergame" on pelkkä demo jolla voi testailla SMS gatewayn ja siihen liitetyn sovellusohjelman toimintaa. Siinä pelataan numeropeliä SMS-viesteillä.
Gatewayhyn on muitakin liityntärajapintoja kuin C kirjasto. Valitsin toisen vaihtoehdon.
Linuxissa käännellään ohjelmia usein hyvinkin huonolla osaamisella. Siksi pitää olla aputyökaluja, joilla homma onnistuu automaattisesti. Siksi näitä aputyökaluja on olemassa ripakopallinen. Kokenut koodinvääntäjä tulee toimeen ilmankin mutta ensi kertaa kääntämisen kanssa tekemisiin joutuva on eri asia.
Tarkoitatko, että jos kyseessä ei ole Linux, niin sitten ohjelmia käännellään hyvällä osaamisella?
Eiköhän se osaaminen ole ihan henkilöstä kiinni eikä makella ole mitään tekemistä tämän asian kanssa. Make ei ole mikään aputyökalu, vaan käytännössä välttämätön, jos sovelluksessa on esim. satoja lähdekooditiedostoja. Make usein myös luodaan dynaamisesti kun systeemiä konfiguroidaan. Katso http://airs.com/ian/configure/
Itseäni pidän jonkinlaisena tumpelona edelleenkin Linuxin kanssa, sillä en tiedä läheskään kaikkea siitä. En edes suurinta osaa.
Windowsissa on aina binäärit. Vain ammattilaiset ja alan harrastajat joutuvat kääntämisen kanssa tekemisiin.
Linuxissa asia on monimutkaisempi. Mikäli jakelussa ei ole valmiita binäärejä joudutaan metsästämään netistä. Joskus sopivat binäärit löytyy, joskus ei. Usein valmiit käännökset ovat yhdelle tai muutamalle jakelulle. Muille pitää kääntää.
Kokematonkin osaa asentaa tarvittavat kirjastot ja headerit. Samoin ./configure ; make ; make install onnistuu kunhan lukee ohjeet. Valitettavasti usein käy niin että omassa jakelussa on liian vanhoja kirjastoja. Silloin taviskäyttäjän henkseleistä loppuu pito ja asia pitää unohtaa ja odottaa uutta jakelupäivitystä.
Linuxin käyttö on aluksi helpompaa kuin Windowsin kun ohjelmat saa rottaa naksauttamalla. Kun ohjelmaa ei löydy pakettivarastosta, alkavat todelliset ongelmat ja Windowsin käytettävyys näyttää aivan ylivoimaiselta.
Käännöksen voi tehdä myös ilman makefileä komentoriviltä.
Se on ihan käyttökelpoinen tapa jos tiedostoja on vain muutama.
No ei ole. Kyllä se käännöksen automatisointi on ihan alkeisperusjuttu.
Ja toisekseen, miksi ohjelmaa ei ole toimitettu valmiiksi käännettynä? Touhu tuntuu nyt jotenkin kummalliselta säädöltä.
"Kyllä se käännöksen automatisointi on ihan alkeisperusjuttu."
Niin on paitsi jonkun yhden sorsakooditiedoston ja yhden libbin kokeiludemossa.
"Ja toisekseen, miksi ohjelmaa ei ole toimitettu valmiiksi käännettynä? Touhu tuntuu nyt jotenkin kummalliselta säädöltä. "
Gatewayta ei ole tarkoitus kääntää, vaan se oma sovellus joka käyttää sitä.
Sovellus joka käyttää sitä, on tehtävä itse ja se toteuttaa ne toiminnot, joita itse tarvitsee. Ja tämä oma sovellus olisi helppo kirjoittaa käyttäen apuna valmiiksi annettua kirjastoa, jonka kautta gatewayhyn liitytään. Mukan on myös sovellusdemo, jolla pääsee liikkeelle. Tai pääsisi, jos sen saisi käännettyä. Lataa sovellus ja kokeile kääntää. Siinä ei ole kun yksi kirjasto ja yksi cpp-lähdekoodi. Tosin et pääse kokeilemaan sitä käytännössä, kun sulla ei ole käytössä gatewayta eikä lisenssitiedosta sille.