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/