2010-04-16 8 views
1

J'ai écrit un programme sous ubuntu, dans lequel j'inclus gtkmozembed.h. Je suis confronté à un problème dans la compilation du programme. Ci-dessous est la forme la plus simple d'un programme qui utilise gtkmozembed.comment compiler un programme avec gtkmozembed.h

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

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

Eventhough, le programme ci-dessus ne fait rien, la compilation de ce programme est beaucoup pour moi ... J'essaie de comile le programme ci-dessus comme ci-dessous

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

et il donne la l'erreur suivante ...

error: gtkmozembed.h: No such file or directory 

Je peux comprendre, quelque chose a d'autre à ajouter à la ligne gcc ci-dessus, de sorte que le compilateur peut trouver le gtkmozembed.h, mais pas obtenir ce que est-ce, 'quelque chose' ... Vous cherchez l'aide de quelqu'un..Merci ...

Répondre

1

Installer libxul-dev (sudo apt-get install libxul-dev) et comprennent

#include <gtkmozembed.h> 

dans le fichier principal (test.c) et compiler avec

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

Votre problème est que gtkmozembed.h ne se trouve pas dans le chemin standard de recherche de fichier d'inclusion (eh bien, l'erreur vous le dit évidemment). Sur mon système, il vit dans $(include)/gtkmozembed/, vous avez deux options

  1. Modifiez le chemin du fichier inclus dans votre source

    #include <gtkmozembed/gtkmozembed.h> 
    
  2. ou ajouter manuellement le chemin vers le chemin de recherche

    gcc `pkg-config --libs --cflags gtk+-2.0` -I/usr/include/gtkmozembed test.c -o test 
    

Vous devriez aller avec l'option 1). gccgcc Ceci indiquera gcc où trouver le fichier include, mais comme Matthew l'a souligné, cela ne suffit pas: vous devrez également ajouter plus d'informations pour la liaison et les inclusions supplémentaires requises. Heureusement gtk-mozembed est livré avec un fichier pkg-config, de sorte que vous pouvez obtenir toutes les informations nécessaires comme vous avez fait pour gtk+-2.0 avec

pkg-config --libs --cflags mozilla-gtkmozembed-embedding 

ou combiné avec l'autre appel

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

Vous devriez aussi (seulement pour coups de pied) jetez un oeil à ce que fait pkg-config. La partie dans "` "est juste ce qui est retourné par le shell lors de l'exécution de cette commande. Sur ma machine:

$ 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 

(sauts de ligne ajoutés par moi). Les parties -I ajoutent simplement les répertoires supplémentaires nécessaires au chemin de recherche du fichier d'inclusion - ils ont été émis car vous avez appelé avec --cflags. Les entrées avec -lxpcomglue doivent être appelées avec --libs et demander une liaison avec cette bibliothèque, c'est-à-dire libxpcomglue.so. Il est situé au /usr/lib/xulrunner-devel-1.9.2/lib. Le reste est un define et un drapeau gcc requis pour gtkmozembed.

+0

je pense Je n'ai pas installé gtkmozembed. Quand je cours avec "gcc' pkg-config --libs --cflags gtk + -2.0 mozilla-gtkmozembed-embedding' test.c -o test " il donne une erreur comme ceci. Le package mozilla-gtkmozembed-embedding n'a pas été trouvé dans le chemin de recherche pkg-config. Comment installer ce paquet? merci ... – ganapati

0

Essayez ceci:

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

je pense que je n'ai pas installé gtkmozembed. Quand je cours avec "gcc pkg-config --libs --cflags gtk + -2.0 mozilla-gtkmozembed-embedding test.c -o test" il donne une erreur comme ceci. Le package mozilla-gtkmozembed-embedding n'a pas été trouvé dans le chemin de recherche pkg-config. Comment installer ce paquet? merci ... – ganapati

+0

Vous avez probablement besoin d'installer libxul-dev. –

Questions connexes