2014-10-29 66 views
0

在Arch Linux上,升級到Gnome 3.14之後,我對Webkit2Gtk有幾個麻煩。致命錯誤:webkit2/webkit2.h:沒有這樣的文件或目錄

瓦拉: 考慮以下VALA測試:

using Gtk; 
using WebKit; 

public class ValaWebkit : Window { 

    private WebView web_view; 

    public ValaWebkit(){ 
     this.title = "Testing youtube"; 
     set_default_size (800, 600); 

     web_view = new WebView(); 
     add(web_view); 

     //this.web_view.open ("http://www.youtube.com/"); 
     this.web_view.load_uri ("https://www.youtube.com/"); 
    } 

    public static int main (string[] args) { 
     Gtk.init (ref args); 

     new ValaWebkit().show_all(); 
     Gtk.main(); 

     return 0; 
    } 
} 

升級到GNOME 3.14之前,我可以copile這樣valac --pkg gtk+-3.0 --pkg webkit2gtk-3.0 --vapidir . valawebkit.vala(我不是在這裏粘貼webkit2gtk-3.0.vapi因爲它太長了)。現在,隨着GNOME 3.14,如果我嘗試編譯我得到

/home/luca/Sources/vala/webkit test/valawebkit.vala.c:8:29: fatal error: webkit2/webkit2.h: No such file or directory 
#include <webkit2/webkit2.h> 
          ^
compilation terminated. 
error: cc exited with status 256 
Compilation failed: 1 error(s), 0 warning(s) 

而且,如果我嘗試運行,我收到升級到GNOME 3.14編譯的二進制文件,我得到這個錯誤:

./valawebkit: error while loading shared libraries: libwebkit2gtk-3.0.so.25: cannot open shared object file: No such file or directory 

2 )GJS/Eclipse中/的Java(SWT): 如果我運行要麼this gjs example,或者Eclipse(LUNA)或任何其他SWT 4.4基於應用程序,我得到如下:

No bp log location saved, using default. 
[000:000] Cpu: 6.58.9, x4, 2600Mhz, 7847MB 
[000:000] Computer model: Not available 
[000:000] Browser XEmbed support present: 1 
[000:000] Browser toolkit is Gtk2. 
[000:004] Using Gtk2 toolkit 
[000:004] Warning(optionsfile.cc:47): Load: Could not open file, err=2 
[000:004] No bp log location saved, using default. 

我有個感覺它在ArchLinux和Gnome 3.14上是一種包裝問題。有沒有人有同樣的問題?是否有解決方法來編譯和運行webkit2gtk?

編輯 我做了一個小的進展:我發現我需要一個頭文件現在/usr/include/webkitgtk3.0/usr/include/libsoup-2.4下。現在,編譯如下:

valac --pkg gtk+-3.0 --pkg webkit2gtk-3.0 --vapidir . --Xcc="-I/usr/include/webkitgtk-3.0" --Xcc "-I/usr/include/libsoup-2.4" --thread valawebkit.vala 

的作品,但它窗臺失敗有關鏈接:

/tmp/ccQGhB3b.o: In function `vala_webkit_construct': 
valawebkit.vala.c:(.text+0x6e): undefined reference to `webkit_web_view_new' 
valawebkit.vala.c:(.text+0x101): undefined reference to `webkit_web_view_load_uri' 
collect2: error: ld returned 1 exit status 
error: cc exited with status 256 
Compilation failed: 1 error(s), 0 warning(s) 

回答

0

實際上,對於webkit2gtk-4.0,我不需要再提供vapi文件。因此,我可以刪除我的webkit2gtk-4.0.vapi並請編譯這樣的(更簡單):

valac --pkg gtk+-3.0 --pkg webkit2gtk-4.0 --thread valawebkit.vala 
+0

你應該*不*混合來自不同版本的頭文件和二進制文件。由於不兼容,這可能會導致ABI損壞。 – apmasell 2014-10-29 10:41:18

1

有事實,你必須指定--Xcc標誌表明你缺少了的WebKit的pkgconfig文件。 /usr/lib/pkgconfig應該有webkit2gtk-3.0.pc。 Arch軟件包webkit2gtk有一個名爲webkit2gtk-4.0.pc的pkgconfig文件。所以,如果你重命名你的VAPI文件,那應該正確鏈接。

+0

我確實如你所說(見我的回答)和它的工作,謝謝!似乎webkit2gtk-3.0已被webkit2gtk-4.0(爲什麼?)所取代。所以現在我認爲gjs和swt庫都應該針對webkit2gtk-4.0進行重建。你知道該怎麼做嗎? – lviggiani 2014-10-29 10:28:06

+0

當API發生更改時,軟件包往往會重命名。 'gjs'應該使用4.0。如果您通過軟件包管理器安裝了這些軟件,最好讓分發的維護人員在準備好時更新它們。 – apmasell 2014-10-29 10:39:53

相關問題