我在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,但是没有得到那个,'某事'......寻找某人的帮助..谢谢你...
答案 0 :(得分:1)
您的问题是在标准包含文件查找路径中找不到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
在哪里找到包含文件,但正如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所需的define
和gcc
标记。
答案 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