配置gobject-introspection以支持pygobject和pygtk的问题
我正在尝试在我的Mac上安装pygtk,结果它让我先安装pygobject,然后又让我去安装gobject-introspection。在安装的过程中,我遇到了一个问题:在配置的时候出现了这个错误:
检查FFI...没有
检查ffi.h...配置错误:找不到ffi.h
请帮帮我,因为我需要安装gtk。
/usr/include/ffi->ffi.h的位置
提前谢谢你!
3 个回答
ffi.h 是由 libffi-dev 这个软件包提供的,而这个软件包实际上是来自 gcc 源代码包的。大多数情况下,它是可以在 Linux 系统上找到的。
我最开始在组装GLib的时候发现了这个编译失败的问题(我尝试的所有版本都比2.28.7新),后来在使用gobject时又遇到了这个问题;看起来这和其他几个软件包的构建失败也有关系:
- http://lists.gnu.org/archive/html/guile-gtk-general/2006-10/msg00010.html
- 安装GLIB时遇到奇怪的错误
- http://lists.freebsd.org/pipermail/freebsd-gnome/2011-August/026346.html
我尝试按照这些讨论中的建议去做(因为讨论的解决方案大致相同),但都没有成功。
最终的解决方案:完全重新编译和安装GCC(4.7.2)
为什么编译GCC(4.7.2)能解决这个问题?
我在Debian的错误归档中找到了这个帖子:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523869
在阅读时,我注意到我的系统使用的是一个受影响的GCC版本来编译我的各种源代码(来自一台老旧笔记本上的FC9安装)。
我选择4.7.2作为目标,因为在写这篇文章时,它是稳定版本中最新的构建。我相对确定,如果你在系统上简单安装一个较新的GCC,结果也会一样(只要你安装的是4.3.5-4或更高版本),但我没有测试过,因为FC9的安装上显然没有这样的软件包。通过软件包安装有很多潜在的好处,除了简单之外,具体请看下面的内容。
重要提示:如果你打算编译GCC,可能需要一个正常工作(且更新)的glibc环境…… 请在开始手动过程之前了解这个复杂性: http://cygwin.com/ml/libc-alpha/2012-02/msg00646.html
解决方法是找到一个比上面文章中提到的提交早的Glibc版本(我选择了2.14),在安装了这个版本后编译GCC 4.5(我选择了4.5.3,因为它与glibc 2.14发布得比较接近),然后再用当前的Glibc和GCC重新开始这个过程……祝你好运!
- GCC: http://ftp.gnu.org/gnu/gcc/
- Glibc: http://ftp.gnu.org/gnu/glibc/
- Binutils: http://ftp.gnu.org/gnu/binutils/
试试这个:
export FFI_CFLAGS=/usr/include
export FFI_LIBS=/usr/lib
然后
./configure
希望这能解决你的问题。