2014-06-29 102 views
1

我剛剛開始與GTK合作,希望創建跨平臺的應用程序。我已經通過一些教程工作,並在https://developer.gnome.org/gtk-tutorial/stable/c39.html#SEC-HELLOWORLD複製的例子,編譯它gcc -o gtkTest gtkTest.c 'pkg-config --libs --cflags gtk+-3.0'但是當我去運行它,我得到:GTK hello world不適用於OSX

Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded! 
dyld: lazy symbol binding failed: Symbol not found: _cairo_xlib_surface_create 
    Referenced from: /usr/local/lib/libgdk-3.0.dylib 
    Expected in: /usr/local/lib/libcairo.2.dylib 

dyld: Symbol not found: _cairo_xlib_surface_create 
    Referenced from: /usr/local/lib/libgdk-3.0.dylib 
    Expected in: /usr/local/lib/libcairo.2.dylib 

我不知道這意味着什麼(我的編程能力是有限的) - 有任何想法嗎?? 謝謝, 埃德

+0

您使用的是GTK + 2.0教程,GTK + 3.0所以應該期待一些問題...但你看到的是不相關的:它可能意味着你的系統設置不正確:我猜X和/或開羅安裝不是他們應該的? – jku

+0

@jku謝謝!我認爲我已經通過在各種組合中安裝各種各樣的東西挖掘了自己的一個洞...什麼是從頭開始的最簡單的方法?我能做些什麼來「重置」系統並安裝一個可以輕鬆工作的GTK? – ThatGuy

+0

對不起,我沒有足夠的OS X經驗發表評論。 – jku

回答

1

如果這不是一個錯字,你必須反引號(`),而不是單引號(')。

反引號下的命令被執行,但單引號下的命令不是。

所以,你必須:

gcc -o gtkTest gtkTest.c `pkg-config --cflags --libs gtk+-3.0` 

如果這不是問題,請嘗試重新安裝GTK。

UPDATE:

嘗試重新安裝開羅,因爲當你用GTK + -3.0鏈接,您開羅鏈接。 這是一個GTK + 2教程,適用於GTK + 3,後面跟着this教程。

更新2:

是否安裝GTK的標準路徑?/usr/local/include for includes,或者任何它在OSX上?如果你沒有,你必須輸入這個bash:

gcc -o gtkTest gtkTest.c `pkg-config --cflags --libs gtk+-3.0` -L/whatever/library/path -I/whatever/include/path 

用你的include和庫路徑替換/ whatever/includeorlib/path。 -L是設置庫路徑,-I是包含路徑。

BASH不區分大小寫。

注:

我使用Linux,所以這可能無法正常工作。我想這也適用於OSX,因爲Linux和OSX是類Unix系統。

+0

非常感謝!我正在使用反引號 - 我將它們更改爲引號以將代碼顯示爲代碼(我怎樣才能將它們轉義)?當我使用GTK + 3例子運行gcc -o gtkTest gtkTest.c'pkg-config --cflags --libs gtk + -3.0'時,出現'gtkTest.c:1:10:致命錯誤:'gtk/gtk。 h」的文件沒有找到 的#include '當我添加的路徑:'的GCC -o gtkTest gtkTest.c'pkg配置--cflags --libs GTK + -3.0' -L的/ usr/local/lib目錄/ GTK-3.0 -I/usr/local/include/gtk-3.0'錯誤改爲'/usr/local/include/gtk-3.0/gdk/gdkconfig.h:13:10:致命錯誤:'glib.h'文件不是 發現 #include '??? – ThatGuy

+0

嘗試'ls/usr/local/include/gtk-3。0'及其所有子目錄是否存在glib.h或損壞。如果可以的話,嘗試在不同的目錄中重新安裝GTK,比如'〜/ include'和'〜/ lib',並將它們放在include和lib路徑中。如果這不起作用,請嘗試與Clang搭建。這是XCode的默認編譯器(我想你有OS X Mavericks)。用相同的選項從bash中調用它。我建議你使用Clang,因爲我在Ubuntu上使用它,它很棒。順便說一句,'反引號'是由轉義序列組成的。 \和反引號。 –

+0

唯一的glib.h文件位於'/ usr/local/Cellar/glib/2.40.0_1/include/glib-2.0'中,似乎沒有問題。我沒有使用過Clang,但使用過brew和macports。我將查找Clang ... – ThatGuy