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


119

一个成功的配置之后,请与退出文档片断

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

1
您应该检查config.log以查看有关ffi的内容。也许找不到它,但是脚本有错误,并且不会错误退出。可能是因为新的multilib包含目录造成了混淆。还要检查是否将适当的-I开关传递给了编译器。
小丑2012年

Answers:


270

如果您具有基于Debian的Linux操作系统,并且具有apt-get

sudo apt-get install libffi-dev

使用基于Redhat的操作系统:

yum install libffi-devel

使用Alpine Linux:

apk add libffi-dev

6
另外,如果您使用的是基于Redhat的操作系统,请使用yum install libffi-devel
Yonatan

4
请注意,如果您要在64位系统上针对32位交叉编译glib,则需要安装libffi-dev:i386。这对我来说并不明显。:)
比约恩·林奎斯特

6

从源代码编译libffi 3.0.9时,将在中include/Makefile.in安装include ${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



1

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

将所需文件放在可以找到它们的位置后,我开始运行了:

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

3
一个符号链接会不会比一个副本柔和得多?
CousinCocaine
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.