как скомпилировать программу с помощью gtkmozembed.h - PullRequest
1 голос
/ 16 апреля 2010

Я написал программу под Ubuntu, в которую я включил gtkmozembed.h.Я сталкиваюсь с проблемой при компиляции программы. Ниже приведена простейшая форма программы, которая использует gtkmozembed.

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

int main(){
        GtkWidget *mozEmbed;
        mozEmbed = gtk_moz_embed_new();
        return 0;
}

Несмотря на то, что вышеприведенная программа ничего не делает, компиляция этой программы мне очень нужнаЯ пытаюсь скомпилировать вышеуказанную программу, как показано ниже

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

, и она выдает следующую ошибку ...

error: gtkmozembed.h: No such file or directory

Я могу понять, что-то еще должно быть добавлено кприведенная выше строка gcc, чтобы компилятор мог найти gtkmozembed.h, но не получил что-то, «что-то» ... Ищет чью-то помощь .. Спасибо ...

Ответы [ 3 ]

1 голос
/ 22 апреля 2010

Установите libxul-dev (sudo apt-get install libxul-dev) и включите

#include <gtkmozembed.h>

в главном файле (test.c) и скомпилируйте с

gcc `pkg-config --cflags --libs gtk+-2.0 xulrunner-gtkmozembed`  test.c -o test
1 голос
/ 16 апреля 2010

Ваша проблема в том, что gtkmozembed.h не найден в стандартном пути поиска включаемых файлов (что ж, ошибка действительно говорит вам об этом). В моей системе он живет в $(include)/gtkmozembed/, поэтому у вас есть два варианта

  1. Изменить путь к файлу, включенному в ваш источник

    #include <gtkmozembed/gtkmozembed.h>
    
  2. или вручную добавить путь к пути поиска

    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.

0 голосов
/ 18 апреля 2010

Попробуйте это:

gcc `pkg-config --libs --cflags gtk+-2.0 mozilla-gtkmozembed-embedding` test.c -o test
...