GLib编译错误(ffi.h),但安装了libffi

成功configuration后,退出并剪切

gclosure.c:29:17: fatal error: ffi.h: No such file or directory compilation terminated. 

我已经安装了libffi,并findffi.h给出:

 /home/luca/gcc4.6/gcc-4.6.0/libffi/include/ffi.h.in /usr/include/x86_64-linux-gnu/ffi.h /usr/share/doc/ghc-doc/html/users_guide/ffi.html /usr/share/doc/libffi5/html/Using-libffi.html 

如果你有一个apt-get的基于Debian的Linux操作系统:

 sudo apt-get install libffi-dev 

使用基于Redhat的操作系统:

 yum install libffi-devel 

当从源代码中编译libffi 3.0.9时, include/Makefile.in将这些包安装在${PREFIX}/lib/libffi-3.0.9/include directory 。 我确定这有一个很好的理由,但是我很恼火。

编译libffi时,这一行修复了它:

 /bin/perl -pe 's#^includesdir = .*#includesdir = \@includedir\@#' -i include/Makefile.in 

包括现在将被安装在${PREFIX}/include ,这是/usr/local/include我。

我的完整配方是:

 cd /var/tmp rm -rf libffi-3.0.9 untgz /usr/local/src/utils/libffi-3.0.9.tar.gz cd libffi-3.0.9 /bin/perl -pe 's#^AM_CFLAGS = .*#AM_CFLAGS = -g#' -i Makefile.in /bin/perl -pe 's#^includesdir = .*#includesdir = \@includedir\@#' -i include/Makefile.in ./configure --prefix=/usr/local \ --includedir=/usr/local/include gmake gmake install 

在configuration中通过手动设置LIBFFI_CFLAGS获取ffi.h的位置来解决

检查你的GCC版本,并在Debian Bug Archive中注明这个条目: http : //bugs.debian.org/cgi-bin/bugreport.cgi? bug= 523869

这是我的特定问题的最终解决scheme(它看起来完全像你所报告的,但不能用上面的解决scheme来解决)…我的问题与LIBFFI完全没有关系。

一个古老的线程,但无论如何…

将所需的文件放在可以find的位置后,我就可以工作了:

 cp /usr/include/x86_64-linux-gnu/ffi* /usr/local/include/ cp /usr/lib/libffi.so /usr/local/lib/