& ldquo; фатальная ошибка: gtk / gtk.h: нет такого файла или каталога & rdquo; используя make

Однострочный Python:

$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt

В принципе, реализация python для touch.

Мы можем сделать это короче:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt 
1
задан 27 October 2014 в 05:06

3 ответа

sudo apt-get install build-essential gnome-devel

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

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

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

5
ответ дан 24 May 2018 в 13:36
  • 1
    По крайней мере, в моем случае мне не пришлось выполнять sudo apt-get install build-essential gnome-devel, а вторая команда, казалось, работала сначала, но приводила к glib «Нет такого файла или каталога». проблемы. Решение было больше похоже на: g++ `pkg-config --cflags gtk+-3.0` main.cpp -o base `pkg-config --libs gtk+-3.0` – Rui Pimentel 19 January 2016 в 17:54

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

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

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 и LIBS с помощью идентификатора GTK, который вы использовали в макросе PKG_CHECK_MODULES выше

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

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

2
ответ дан 24 May 2018 в 13:36
  • 1
    ты гений. Я просто ждал вашего ответа, потому что я знал, что вы можете дать соответствующий ответ. благодаря :) – osama 30 December 2013 в 08:14

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

2
ответ дан 24 May 2018 в 13:36

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

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