1

操作系统:Fedora 18
内核:3.6.10-4.fc18.x86_64

我无法编译一个简单的 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
4

1 回答 1

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
于 2013-08-21T04:34:27.090 回答