Ваша проблема в том, что gtkmozembed.h
не найден в стандартном пути поиска включаемых файлов (что ж, ошибка действительно говорит вам об этом). В моей системе он живет в $(include)/gtkmozembed/
, поэтому у вас есть два варианта
Изменить путь к файлу, включенному в ваш источник
#include <gtkmozembed/gtkmozembed.h>
или вручную добавить путь к пути поиска
gcc `pkg-config --libs --cflags gtk+-2.0` -I/usr/include/gtkmozembed test.c -o test
Вам следует выбрать вариант 1).
Это сообщит gcc
, где найти файл включения, но, как указал Мэтью, этого недостаточно: вам, скорее всего, также потребуется добавить дополнительную информацию для ссылок и необходимые дополнительные включения. К счастью, gtk-mozembed поставляется с файлом pkg-config
, так что вы можете получить всю необходимую информацию, как вы сделали для gtk+-2.0
с помощью
pkg-config --libs --cflags mozilla-gtkmozembed-embedding
или в сочетании с другим вызовом
gcc `pkg-config --libs --cflags gtk+-2.0 mozilla-gtkmozembed-embedding` test.c -o test
Вы также должны (только для ударов) взглянуть на то, что делает pkg-config
. Часть в «» - это то, что возвращается оболочкой при выполнении этой команды. На моей машине:
$ pkg-config --libs --cflags mozilla-gtkmozembed-embedding
-DXPCOM_GLUE -fshort-wchar \
-I/usr/include/xulrunner-1.9.2 -L/usr/lib/xulrunner-devel-1.9.2/lib -lxpcomglue
(разрывы строк добавлены мной). Детали -I
просто добавляют дополнительные необходимые каталоги к пути поиска включаемого файла - они были отправлены, потому что вы вызвали с помощью --cflags
. Записи с -lxpcomglue
вызваны вызовом с --libs
и запросом связи с этой библиотекой, т.е. libxpcomglue.so
. Он расположен в /usr/lib/xulrunner-devel-1.9.2/lib
. Остальные - флаг define
и gcc
, необходимый для gtkmozembed.