我无法编译简单的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;
}
命令:
[root@localhost 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 :(得分:3)
您需要针对使用命令pkg-config --libs --cflags gtk + -2.0找到的库进行构建,因此您需要执行命令以获取完整的库并包含目录路径,GCC将获取输出(libs和cflags)作为参数,但GCC不会理解该命令。因此,您需要执行以下操作 -
gcc -o graph graph.c `pkg-config --libs --cflags gtk+-2.0`
根据问题更新进行修改:
在Fedora 18上 - 需要更新mesa-libglapi,以修复_glapi_tls_Dispatch未定义的引用问题,使用mesa-libglapi-9.0.1-1.fc18.x86_64版本,这个未定义的引用问题仍然存在。更新库可修复问题 -
yum update mesa-libglapi