GLib编译错误(ffi.h),但安装了libffi
Posted
技术标签:
【中文标题】GLib编译错误(ffi.h),但安装了libffi【英文标题】:GLib compile error (ffi.h), but libffi is installed 【发布时间】:2012-10-10 13:18:06 【问题描述】:配置成功后,退出 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
【问题讨论】:
您应该检查 config.log 以了解它对 ffi 的说明。也许它没有找到它,但是脚本有问题并且不会因错误而退出。可能它被新的 multilib 包含目录混淆了。还要检查是否将适当的 -I 开关传递给编译器。 【参考方案1】:如果你有一个基于 Debian 的 Linux 操作系统,apt-get
:
sudo apt-get install libffi-dev
使用基于 Redhat 的操作系统:
yum install libffi-devel
使用 Alpine Linux:
apk add libffi-dev
【讨论】:
或者,如果您使用的是基于 Redhat 的操作系统,请使用 yum install libffi-devel 请注意,如果您在 64 位系统上为 32 位交叉编译 glib,则需要安装libffi-dev:i386
。这对我来说并不明显。 :)
如果我没有sudo
权限怎么办?我已经在我的主目录中安装了libffi
。
ubuntu.pkgs.org/18.04/ubuntu-main-amd64/…@OliverShang,下载后你得看看如何使用这个包。
@EricMilliot-Martinez 谢谢,我想我应该让管理员安装这个。【参考方案2】:
从源代码编译 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
【讨论】:
【参考方案3】:通过手动设置 LIBFFI_CFLAGS 来解决 configure 中 ffi.h 的位置
【讨论】:
如何在configure中设置?【参考方案4】:检查您的 GCC 版本,并在 Debian 错误存档中记录以下条目:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523869
这是我的特定问题的最终解决方案(它看起来与您报告的完全一样,但无法通过上述解决方案解决)...我的问题与 LIBFFI 完全无关。
【讨论】:
【参考方案5】:一个旧线程,但无论如何......
将所需文件放在可以找到它们的位置后,我开始工作了:
cp /usr/include/x86_64-linux-gnu/ffi* /usr/local/include/
cp /usr/lib/libffi.so /usr/local/lib/
【讨论】:
符号链接难道不会比副本更温和吗? 如果我没有sudo
访问权限怎么办以上是关于GLib编译错误(ffi.h),但安装了libffi的主要内容,如果未能解决你的问题,请参考以下文章
GTKmm3 (GTK+ 3 C++) 编译但运行时抛出 GLib-GIO-CRITICAL 错误
openSUSE 安装compass,mkmf.rb can't find,checking for ffi.h...extconf.rb failed
安装 Sharp /usr/include/vips/vips8:35:25:致命错误:glib-object.h
为啥我在redhat5用./configure编译的时候出现以下报错 :no package 'glib-2.0 ' found