2013-08-21 35 views
1

OS:Fedora的18
內核:3.6.10-4.fc18.x86_64不能夠編譯GTK程序

我不能夠編譯一個簡單的GTK程序:

#include <gtk/gtk.h> 

int main(int argc, char *argv[]) 
{ 
    GtkWidget *window; 

    gtk_init(&argc, &argv); 

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    gtk_widget_show(window); 

    gtk_main(); 

    return 0; 
} 

命令:

[[email protected] dir]##gcc -o graph graph.c `pkg-config --libs --cflags gtk+-2.0` 
/lib64/libGL.so.1: undefined reference to _glapi_tls_Dispatch 
collect2: error: ld returned 1 exit status 
+0

pkg-config --libs --cflags gtk + -2.0命令輸出顯示了什麼? –

+0

-pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -I/usr/include/harfbuzz -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 - lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 – duck

回答

3

你需要建立針對與命令pkg配置--libs --cflags GTK + -2.0發現庫中,所以你需要執行命令來獲取完整的庫和包括可怕ctory路徑,GCC會將輸出(libs和cflags)作爲參數,但GCC不會理解該命令。所以,你需要做以下 -

  gcc -o graph graph.c `pkg-config --libs --cflags gtk+-2.0` 

編輯基於問題的更新:

在Fedora 18 - 檯面 - libglapi需要更新,修復_glapi_tls_Dispatch未定義的引用問題,用檯面,libglapi- 9.0.1-1.fc18.x86_64版本這個未定義的引用問題仍然存在。更新庫修復了問題 -

  yum update mesa-libglapi 
+0

這是我在我的問題 – duck

+0

中提到的相同命令不,你錯過了「'」字符pkg-config命令的前端和結尾,用於在shell中執行命令。 –

+0

ohh對不起..但該命令仍然顯示錯誤。 讓我編輯問題 – duck