Невозможно скомпилировать приложение GTK +


1

Я пытаюсь скомпилировать простое приложение GTK для тестирования на машине Trisquel 7. Пакеты взяты из Ubuntu 14.04 LTS. Я libgtk2.0-devустановил, но когда я пытаюсь скомпилировать, это результат.

$ gcc -Wall -Wextra -std=c11 `pkg-config --libs --cflags gtk+-2.0` main.c
a_out-main.o: In function `main':
/home/mac/c/main.c:7: undefined reference to `gtk_init'
/home/mac/c/main.c:9: undefined reference to `gtk_window_new'
/home/mac/c/main.c:10: undefined reference to `gtk_window_get_type'
/home/mac/c/main.c:10: undefined reference to `g_type_check_instance_cast'
/home/mac/c/main.c:10: undefined reference to `gtk_window_set_title'
/home/mac/c/main.c:11: undefined reference to `g_type_check_instance_cast'
/home/mac/c/main.c:11: undefined reference to `gtk_window_set_default_size'
/home/mac/c/main.c:12: undefined reference to `g_type_check_instance_cast'
/home/mac/c/main.c:12: undefined reference to `gtk_window_set_position'
/home/mac/c/main.c:13: undefined reference to `gtk_widget_show'
/home/mac/c/main.c:15: undefined reference to `g_type_check_instance_cast'
/home/mac/c/main.c:15: undefined reference to `gtk_main_quit'
/home/mac/c/main.c:15: undefined reference to `g_signal_connect_data'
/home/mac/c/main.c:18: undefined reference to `gtk_main'

Я проверил вывод pkg-config --libs --cflags gtk+-2.0, и он выглядит правильно, но по какой-то причине он не был правильно связан.

Ответы:


3

Поставьте галочки, содержащие команду pkg-config, в конце строки. По какой-то причине, gcc читает его правильно, только если он последний. У меня была та же самая проблема сегодня, когда я пытался создать примеры из репозитория GTK. Линия в их make-файлах,

$(CC) -o $(@F) $(LIBS) $(OBJS)

должно быть

$(CC) -o $(@F) $(OBJS) $(LIBS)

вместо.


1

Я считаю, что проблема в том, что компоновщик однопроходный. То есть он должен увидеть ссылку, прежде чем найдет свое определение. Таким образом, бит pkg-config, в котором указаны определения, должен идти после main.c, где есть ссылки.


Это лучше, чем «по какой-то причине» другого ответа. И действительно, хотя pkg-config --blahfile.c работает для многих простых случаев, это не всегда - например , он работает для меня на Debian с , pkg-configпрежде чем один test.c, но не с MSYS2 mingw-w64оболочки.
underscore_d
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.