Как скомпилировать программу GLEL helloworld?

Я не могу скомпилировать этот код под 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 :( текст + 0x24): неопределенная ссылка на g_list_append hello_glib.c :(. текст + 0x34): неопределенная ссылка на g_list_first collect2: ld возвращен 1 статус выхода

У меня установлен libglib2.0-dev, почему ошибка?

4
задан 1 January 2012 в 03:02

1 ответ

Попробуйте это, я думаю, что libs должны идти после «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: warning: format «% s» ожидает аргумент типа «char * ', но аргумент 2 имеет тип' gpointer '[-Wformat]

Я не эксперт от 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;
}

Счастливые праздники. :

)
5
ответ дан 25 May 2018 в 15:42

Другие вопросы по тегам:

Похожие вопросы: