119

配置成功后,使用snipped退出

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

我安装了 libffi,并找到 ffi.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
4

5 回答 5

270

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

sudo apt-get install libffi-dev

使用基于 Redhat 的操作系统:

yum install libffi-devel

使用 Alpine Linux:

apk add libffi-dev
于 2013-07-08T01:49:23.360 回答
6

从源代码编译 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
于 2013-11-19T00:49:31.967 回答
4

通过手动设置 LIBFFI_CFLAGS 来解决 configure 中 ffi.h 的位置

于 2012-10-19T21:46:51.563 回答
2

检查您的 GCC 版本并在 Debian 错误存档中记下此条目:http ://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523869

这是我的特定问题的最终解决方案(它看起来与您报告的完全一样,但无法用上面的解决方案解决)......我的问题与 LIBFFI 完全无关。

于 2013-02-01T12:15:12.047 回答
1

一个旧线程,但无论如何......

将所需文件放在可以找到它们的位置后,我得到了它的工作:

cp /usr/include/x86_64-linux-gnu/ffi* /usr/local/include/
cp /usr/lib/libffi.so /usr/local/lib/
于 2013-08-05T12:17:41.770 回答