“фатальная ошибка: gtk/gtk.h: Никакой такой файл или каталог” использование не делает

Я пытаюсь использовать, делают команду для создания. Я следую за этим. Я компилирую код с помощью GTK+2 и языка C

hp@ubuntu:~/amhello$ make
make  all-recursive
make[1]: Entering directory `/home/hp/amhello'
Making all in src
make[2]: Entering directory `/home/hp/amhello/src'
gcc -DHAVE_CONFIG_H -I. -I..     -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o         main.o main.c
main.c:3:20: fatal error: gtk/gtk.h: No such file or directory
compilation terminated.
make[2]: *** [main.o] Error 1
make[2]: Leaving directory `/home/hp/amhello/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/hp/amhello'
make: *** [all] Error 2

это - код main.c

#include<config.h>
#include<stdio.h>
#include<gtk/gtk.h>
void static call(GtkWidget *widget,gpointer data) {
    g_print("%s \n",(gchar*) data);
}
int main(int agrc, char *agrv[]) {
    gtk_init(&agrc,&agrv);
    GtkWidget *window,*button;
    window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
    g_signal_connect(window,"delete-event",G_CALLBACK(gtk_main_quit),NULL);
    gtk_window_set_title(GTK_WINDOW(window),"one button");
    button=gtk_button_new_with_label("hello world");
    g_signal_connect(button,"clicked",G_CALLBACK(call),(gpointer) "hello world");
    gtk_container_set_border_width(GTK_CONTAINER(window),10);
    gtk_container_add(GTK_CONTAINER(window),button);
    gtk_widget_show_all(window);
    gtk_main();
    return (0);
}
18
задан 29 January 2019 в 08:26

5 ответов

Это означает, что у вас нет заголовков gtk для сборки вещей с использованием GTK +. Действительно странно, что ошибка не появилась на шаге ./configure. Чтобы решить эту проблему, просто сделайте:

sudo apt-get install libgtk2.0-dev

или libgtk-3-dev.

Это должно сделать это.

0
ответ дан 29 January 2019 в 08:26
sudo apt-get install build-essential gnome-devel

Это также необходимо, чтобы вы могли делать классные вещи, такие как:

g++ main.cpp -o base `pkg-config --cflags --libs gtk+-3.0`

Это позволяет вам использовать pkg-config, чтобы сэкономить много времени

0
ответ дан 29 January 2019 в 08:26

Так как Вы используете автоинструменты для генерации Make-файлов, необходимо сказать, автоделают, как найти заголовок и зависимости библиотеки проекта и включить их в заключительные Make-файлы. Это не моя область знаний, но я попытаюсь указать на Вас в правильном направлении. Большая часть следующего основана на учебном руководстве, найденном при пользовании библиотеками C/C++ с Automake и Autoconf

Во-первых, необходимо изменить верхний уровень configure.ac файл для добавления зависимости Gtk-2.0. Можно использовать PKG_CHECK_MODULES макрос для выполнения pkg-config для нахождения соответствия включают и директивы библиотеки - это - хорошая практика для проверки этого pkg-config существует сначала, таким образом, мы должны добавить a PKG_PROG_PKG_CONFIG тест также. Полужирные части указывают на то, что добавляется относительно файлов в исходном amhello учебном руководстве, с которого Вы запустили.

AC_INIT([amhello], [1.0], [bug-automake@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
 Makefile
 src/Makefile
])
dnl Test for pkg-config
PKG_PROG_PKG_CONFIG([0.22])
dnl Test for gtk+
PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.24.10])
AC_OUTPUT

Затем в Вашем src/Makefile.am Вы можете получить CFLAGS и ОСВОБОЖДАЕТЕ использование GTK идентификатор, который Вы использовали в PKG_CHECK_MODULES макрос выше

bin_PROGRAMS = hello
hello_SOURCES = main.c
AM_CPPFLAGS = ${GTK_CFLAGS}
hello_LDADD = ${GTK_LIBS}

Когда Вы повторно выполняетесь make, это должно повторно создать Ваш src/Makefile с соответствующим -I включайте пути, -L пути к библиотеке и библиотеки.

2
ответ дан 29 January 2019 в 08:26

Gtk3 эквивалентный пакет debian / ubuntu: libgtk-3-dev

0
ответ дан 29 January 2019 в 08:26

В CentOS 7: a) пакеты:

pkg-config --list-all|grep gtk
...
gtk+-3.0                  GTK+ - GTK+ Graphical UI Library
...
gtk+-2.0                  GTK+ - GTK+ Graphical UI Library (x11 target)
...

b) редактирование заголовка вашего фрагмента:

#include<config.h>
#include<stdio.h>
#include<gtk/gtk.h>

до

#include<stdlib.h>
#include<stdio.h>
#include<gtk/gtk.h>

c) компиляция с использованием:

gcc main.c -o main `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` 

или

gcc main.c -o main `pkg-config --cflags gtk+-3.0` `pkg-config --libs gtk+-3.0` 

и

d) выполнение с использованием:

GDK_SCALE=5 ./main

сработало для меня !

0
ответ дан 20 March 2020 в 17:03

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

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