Je ne peux pas compiler ce code sous Ubuntu 11.10 alors qu'il compile normalement sous Ubuntu 10.04:
#include <stdio.h>
#include <glib.h>
int main(int argc, char** argv) {
GList* list = NULL;
list = g_list_append(list, "Hello world!");
printf("The first item is '%s'\n", g_list_first(list)->data);
return 0;
}
$ gcc $ (pkg-config --cflags --libs glib-2.0) hello_glib.c
hello_glib.c :(. text + 0x24): référence non définie à g_list_append
hello_glib.c :(. text + 0x34): référence non définie à g_list_first
collect2: ld a renvoyé 1 état de sortie
J'ai libglib2.0-dev installé, pourquoi l'erreur alors?
Essayez ceci, je pense que les bibliothèques doivent aller après "hello_glib.c":
gcc -Wall -o hello_glib hello_glib.c $(pkg-config --cflags --libs glib-2.0)
./hello_glib
Ne me demandez pas pourquoi, je ne sais pas, mais la commande semble être nécessaire, elle a été utilisée dans un correctif récent (non associé): http://Bazaar.launchpad.net/~ubuntu-branches /ubuntu/oneiric/getstream/oneiric/revision/7#debian/patches/as-needed.dpatch
Vous avez également eu une autre erreur:
test.c: dans la fonction 'main': test.c: 6: 6: avertissement: le format '% s' attend un argument de type 'char *', mais l'argument 2 a le type 'gpointer' [-Wformat]
Je ne suis pas un expert en C, mais je pense que vous devriez convertir les données de la liste en chaîne de caractères:
#include <stdio.h>
#include <glib.h>
int main(int argc, char** argv) {
GList* list = NULL;
list = g_list_append(list, "Hello world!");
char* str = g_list_first(list)->data;
printf("The first item is '%s'\n", str);
return 0;
}
Joyeuses fêtes. :)