Я не могу скомпилировать этот код в Ubuntu 11.10, в то время как он обычно компилируется в 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): неопределенная ссылка на g_list_append
hello_glib.c :(. Text + 0x34): неопределенная ссылка на g_list_first
collect2: ld вернул 1 состояние выхода
У меня установлен libglib2.0-dev, почему тогда ошибка?
Попробуйте, я думаю, что библиотеки должны идти после "hello_glib.c":
gcc -Wall -o hello_glib hello_glib.c $(pkg-config --cflags --libs glib-2.0)
./hello_glib
Не спрашивайте меня, почему, я не знаю, но порядок, кажется, требуется, он был использован в недавнем (не связанном) патче: http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/oneiric/getstream/oneiric/revision/7#debian/patches/as-needed.dpatch
У вас также была другая ошибка:
test.c: в функции «main»: test.c: 6: 6: предупреждение: формат ожидает «% s» аргумент типа 'char *', но аргумент 2 имеет тип 'gpointer' [-Wformat]
blockquote>Я не эксперт C, но я думаю, что вы должны преобразовать данные списка в символ Строка:
#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; }
Счастливых праздников. :)