【问题标题】:GTK hello world not working on OSXGTK hello world 无法在 OSX 上运行
【发布时间】:2014-06-29 09:50:09
【问题描述】:

我刚开始使用 GTK,想创建跨平台应用程序。我已经完成了一些教程并复制了https://developer.gnome.org/gtk-tutorial/stable/c39.html#SEC-HELLOWORLD 的示例,并使用gcc -o gtkTest gtkTest.c 'pkg-config --libs --cflags gtk+-3.0' 编译了它,但是当我运行它时,我得到了:

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

我不确定这意味着什么(我的编程能力有限)——有什么想法吗? 谢谢, 埃德

【问题讨论】:

  • 您正在使用带有 GTK+ 3.0 的 GTK+ 2.0 教程,所以应该会遇到一些问题……但是您看到的问题与此无关:这可能意味着您的系统设置不正确:我猜想 X 和/或 Cairo 安装不是它们应该的样子?
  • @jku 谢谢!我想我通过安装各种组合的各种东西给自己挖了一个洞……从头开始最简单的方法是什么?我可以做些什么来“重置”系统并安装可以轻松运行的 GTK?
  • 抱歉,我没有足够的 OS X 经验来发表评论。

标签: macos gtk


【解决方案1】:

如果这不是拼写错误,则必须使用反引号 (`) 而不是单引号 (')。

反引号下的命令被执行,但单引号下的命令不被执行。

所以你有:

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

如果这不是问题,请尝试重新安装 GTK。

更新:

尝试重新安装 Cairo,因为当您与 gtk+-3.0 链接时,您将与 Cairo 链接。 这是一个 GTK+ 2 教程,对于 GTK+ 3,请关注this 教程。

更新 2:

您是否将 GTK 安装到标准路径? /usr/local/include 用于包含,或者在 OSX 上是什么?如果没有,则必须在 bash 中输入:

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

将 /whatever/includeorlib/path 替换为您的包含和库路径。 -L 是设置库路径,-I 是包含路径。

BASH 区分大小写。

注意:

我使用 Linux,所以这可能行不通。我想这也适用于 OSX,因为 Linux 和 OSX 是类 Unix 系统。

【讨论】:

  • 非常感谢!我正在使用反引号 - 我将它们更改为引号以在此处将代码显示为代码(我该如何转义它们)?当我使用 GTK+3 示例运行 gcc -o gtkTest gtkTest.c pkg-config --cflags --libs gtk+-3.0 时,我得到了 gtkTest.c:1:10: fatal error: 'gtk/gtk.h' file not found #include <gtk/gtk.h> 添加路径时:gcc -o gtkTest gtkTest.c pkg-config --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: fatal error: 'glib.h' file not found #include <glib.h> ???
  • 尝试ls /usr/local/include/gtk-3.0 及其所有子目录查看glib.h 是否存在或是否已损坏。如果没问题,请尝试在不同的目录中重新安装 GTK,例如 ~/include~/lib 并将其放入包含和 lib 路径中。如果这不起作用,请尝试使用 Clang 构建。这是 XCode 的默认编译器(我想你有 OS X Mavericks)。使用相同的选项从 bash 调用它。我推荐你使用 Clang,因为我在 Ubuntu 上使用它,它很棒。顺便说一句,“反引号”是由转义序列组成的。 \ 和一个反引号。
  • 唯一的 glib.h 文件在 /usr/local/Cellar/glib/2.40.0_1/include/glib-2.0 中,似乎没问题。我没有使用过 Clang,但使用过 brew 和 macports。我去查一下 Clang...
  • 尝试编辑 /usr/local/include/gtk-3.0/gdk/gdkconfig.h 中第 13 行的 include 指令,使其与 glib.h 的绝对路径匹配 (#include "/usr/local/Cellar/glib/2.40.0_1/include/glib-2.0/glib.h") .
  • 当你在最近的 Mac 系统上使用 gcc 时,它实际上使用了 Clang。尝试不带参数运行它——它会打印出clang: error: no input files!
猜你喜欢
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多