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

del*_*uca 116 gtk glib

成功配置后,使用剪切进行退出

gclosure.c:29:17: fatal error: ffi.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

我安装了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
Run Code Online (Sandbox Code Playgroud)

Eri*_*nez 268

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

sudo apt-get install libffi-dev
Run Code Online (Sandbox Code Playgroud)

使用基于Redhat的操作系统:

yum install libffi-devel
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您使用的是基于Redhat的操作系统,请使用yum install libffi-devel (6认同)
  • 请注意,如果您在64位系统上为32位交叉编译glib,则需要安装`libffi-dev:i386`.这对我来说并不明显.:) (4认同)

Mar*_*ris 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
Run Code Online (Sandbox Code Playgroud)

现在将安装包含${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
Run Code Online (Sandbox Code Playgroud)


del*_*uca 4

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