Tämä pitäisi saada käännettyä gcc:llä, mutta kääntäjä ei löydä kirjastoa...
#include <glib.h> #include <stdio.h> int main(int argc, char** argv) { GString* list = NULL; char hello[]="Hello world!"; gchar * hellog=NULL; hellog=hello; list=g_string_new(""); printf("The first item is '%s'\n", (char *)"hmm"); printf("Kääntyy\n"); return 0; }
Tämä koodi antaa virheen...
$ gcc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -o OmaRapellykseni2 OmaRapellykseni3.c /usr/bin/ld: /tmp/cchwNkoZ.o: in function `main': OmaRapellykseni3.c:(.text+0x5e): undefined reference to `g_string_new' collect2: error: ld returned 1 exit status
... yrittäessäni kääntää sitä, mutta jos kommentoin list=g_string(""), niin ohjelma kääntyy...
#include <glib.h> #include <stdio.h> int main(int argc, char** argv) { GString* list = NULL; char hello[]="Hello world!"; gchar * hellog=NULL; hellog=hello; //list=g_string_new(""); printf("The first item is '%s'\n", (char *)"hmm"); printf("Kääntyy\n"); return 0; }
$ gcc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -o OmaRapellykseni2 OmaRapellykseni3.c
Mitähän pitäisi asentaa/muuttaa käännöskäskyn parametreja Käyttiksenä Ubuntu-variantti.
Kiitokset avusta...
... Heti auttoi, kun kysyi täällä asiaa...
gcc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -g -std=c99 OmaRapellykseni3.c -lglib-2.0 -lm -o OmaRapellykseni4
Niin, vastaisuuden varalle:
Jos ld:stä (linkkeri) tulee virhe, että:
undefined reference
Niin tämä tarkoittaa aina, että linkkeri ei löydä kyseistä symbolia. Tämä tarkoittaa, että sitä ei ole sisällytetty linkerille annettavaan koodiin.
Tässä tapauksessa, se ei löydä g_string_new -funktiota.
Tässä tapauksessa oleellinen osa on siis:
-lglib-2.0
joka sisältää lähdekoodin ko. funktiolle. -I antaa vain header:t.
-D:t on optioita eli "konfiguraatioita". -std taas vinkkaa, että missä standardissa ollaan, koska asiat muuttuvat standardien välillä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.