我创建了或改编这个简单的webkit-1.0
演示(仅包含一个带有webview的窗口,里面显示一个本地HTML文件):
// From: https://wiki.gnome.org/Projects/WebKitGtk/ProgrammingGuide/Tutorial
#include <gtk/gtk.h>
#include <webkit/webkit.h>
static void destroyWindowCb(GtkWidget* widget, GtkWidget* window) { gtk_main_quit(); }
static gboolean closeWebViewCb(WebKitWebView* webView, GtkWidget* window) { gtk_widget_destroy(window); return TRUE; }
int main(int argc, char* argv[]) {
gtk_init(&argc, &argv);
GtkWidget *main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(main_window), 800, 600);
WebKitWebView *webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
gtk_container_add(GTK_CONTAINER(main_window), GTK_WIDGET(webView));
g_signal_connect(main_window, "destroy", G_CALLBACK(destroyWindowCb), NULL);
g_signal_connect(webView, "close", G_CALLBACK(closeWebViewCb), main_window);
webkit_web_view_load_uri(webView, ".../test.html");
gtk_widget_grab_focus(GTK_WIDGET(webView));
gtk_widget_show_all(main_window);
gtk_main();
return 0;
}
使用
编译此应用程序g++ owb.cpp `pkg-config --cflags --libs gtk+-2.0 webkit-1.0`
工作正常。 但我想创建此的静态版本,因此我使用以下命令:
g++ owb.cpp -static `pkg-config --static --cflags --libs gtk+-2.0 webkit-1.0`
但是这个命令会导致错误信息:
$ g++ owb.cpp -static `pkg-config --static --cflags --libs gtk+-2.0 webkit-1.0`
/usr/bin/ld: cannot find -lgdk_pixbuf-2.0
/usr/bin/ld: cannot find -latk-1.0
/usr/bin/ld: cannot find -lharfbuzz
/usr/bin/ld: cannot find -lwebkitgtk-1.0
/usr/bin/ld: cannot find -ljavascriptcoregtk-1.0
/usr/bin/ld: cannot find -lffi
... some warnings skipped ...
collect2: error: ld returned 1 exit status
当我尝试ldconfig -p | grep gdk_pixbuf-2.0
时,我得到了:
$ ldconfig -p | grep gdk_pixbuf-2.0
libgdk_pixbuf-2.0.so.0 (libc6) => /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0
libgdk_pixbuf-2.0.so (libc6) => /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so
以及所有其他图书馆。
那有什么不对?