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

配置成功后,使用 snipped创建出口

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

I have libffi installed, and locate ffi.h gives:

/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
81092 次浏览

Resolved by manually setting LIBFFI_CFLAGS for location of ffi.h in configure

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

这是我特定问题的最终解决方案(它看起来和你报告的完全一样,但是不能用上面的解决方案来解决) ... 我的问题与 LIBFFI 完全没有关系。

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

sudo apt-get install libffi-dev

使用 Redhat-base 操作系统:

yum install libffi-devel

使用 Alpine Linux:

apk add libffi-dev

一条旧线,不过不管怎样..。

在把所需的文件放到一个可以找到它们的地方之后,我让它工作了:

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

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

这一行修复了在编译 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