如何用gtkmozembed.h编译程序

时间:2010-04-16 14:29:53

标签: c linux gcc gtk mozilla

我在ubuntu下编写了一个程序,其中包含了gtkmozembed.h。我在编译程序时遇到问题.Below是使用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 个答案:

答案 0 :(得分:1)

您的问题是在标准包含文件查找路径中找不到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
    
  3. 你应该选择1)。

    这将告诉gcc在哪里找到包含文件,但正如Matthew所指出的,这还不够:您很可能还需要添加更多链接信息和所需的附加包含。值得庆幸的是,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做了些什么。 “`”中的部分就是执行该命令时shell返回的部分。在我的机器上:

    $ 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。其余的是gtkmozembed所需的definegcc标记。

答案 1 :(得分:1)

安装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

答案 2 :(得分:0)

试试这个:

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