Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: satsuma - 17.06.07 - klo:11.57
-
Ajattelin alkaa pientä C-ohjelmaa tekemään ja siiihen
olisi tarkoitus tehdä käyttöliittymä ncursesin avulla.
Asensin paketin libncurses5, mutta jostain syystä
ei toimi.
Eli, kun yritän kääntää ohjelmaa, jossa olen include-lauseella
liittänyt ncurses.h-tiedoston, ilmoittaa kääntäjä, että
test.c:1:21: error: ncurses.h: No such file or directory
Onko kellään vinkkejä tähän?
-
Kokeile asentaa paketti libncurses5-dev. Käännettäessä lähdekoodista yleensä vaaditaan dev-paketit.
-
Kiitos vastauksesta.
Jotenkin ajattelin, että tuo dev-paketti liittyisi itse kirjaston
kehittämiseen.
OK, mutta edelleen ei toimi niin kuin pitäisi. Enää ei tule
herjausta include-lauseesta, mutta ncurses-funtioita
kääntäjä ei tunnista. Kun yritän kääntää seuraavaa
ohjelmaa
#include <ncurses.h>
int main()
{
initscr(); /* Start curses mode */
printw("Hello World !!!"); /* Print Hello World */
refresh(); /* Print it on to the real screen */
getch(); /* Wait for user input */
endwin(); /* End curses mode */
return 0;
}
tulee jokaisesta funktiokutusta seuraavan kaltainen virhe:
... undefined reference to 'initscr'
Puuttuuko multa mahdollisesti vielä jotain muitakin paketteja?
-
Pitäisi löytyä kuitenkin tuosta headerista kyseisen funktion esittely?
Minä mistään mitään ymmärrä, mutta:
locate ncurses.h | xargs grep initscr
-
tulee jokaisesta funktiokutusta seuraavan kaltainen virhe:
... undefined reference to 'initscr'
Veikkaisin että tuo tulee linkkeriltä ja syynä on puuttuva ncurses-kirjasto eli et ole käskenyt linkkeriä linkkaamaan ohjelmaasi ncurses-kirjastoa vastaan. Jos nyt käännät tuota gcc:llä niin parametri "-lncurses" auttanee...
-
(Ääh, mgronber ehti ensin, mutta menköön.)
tulee jokaisesta funktiokutusta seuraavan kaltainen virhe:
... undefined reference to 'initscr'
Puuttuuko multa mahdollisesti vielä jotain muitakin paketteja?
Kirjastot tulee kääntämisen yhteydessä vielä linkittää mukaan lopulliseen ohjelmaan. Eli tässä tapauksessa tähän tapaan:
gcc -lncurses ohjelma.c -o ohjelma
Vastaavasti jos käytössä on jokin IDE, tulee projektin asetuksiin lisätä kyseiset linkkeriparametrit. Eli siis jokaista kirjastoa kohden -lkirjasto.
-
Linkkeristähän siinä oli kyse.
Kiitos kaikista vastauksista. ;D