119 votes

Erreur de compilation de GLib (ffi.h), mais libffi est installée

Après une configuration réussie, faites des sorties avec extrait de

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

J'ai installé libffi, et localiser ffi.h donne :

/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

271voto

Si vous avez un système d'exploitation Linux basé sur Debian avec apt-get :

sudo apt-get install libffi-dev

Avec un système d'exploitation basé sur Redhat :

yum install libffi-devel

Avec Alpine Linux :

apk add libffi-dev

6voto

Mark Solaris Points 123

Lorsque l'on compile la libffi 3.0.9 à partir du code source, l'option include/Makefile.in installe les includes dans le ${PREFIX}/lib/libffi-3.0.9/include directory . Je suis sûr qu'il y a une MAGNIFIQUE raison à cela, mais cela m'agace.

Cette ligne le corrige, lors de la compilation de libffi :

/bin/perl -pe 's#^includesdir = .*#includesdir = \@includedir\@#' -i include/Makefile.in

Les includes seront maintenant installés dans ${PREFIX}/include qui est /usr/local/include pour moi.

Ma recette complète est :

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

4voto

deltaluca Points 1652

Résolu en définissant manuellement LIBFFI_CFLAGS pour l'emplacement de ffi.h dans configure.

2voto

mindwarpstudios Points 41

Vérifiez votre version de GCC et notez cette entrée dans l'archive des bogues de Debian : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523869

C'était la solution finale à mon problème particulier (il ressemblait exactement à ce que vous rapportez, mais ne pouvait pas être résolu avec la solution ci-dessus)... mon problème n'avait rien à voir avec LIBFFI du tout.

1voto

Hammar Points 21

Un vieux fil, mais quand même...

Après avoir placé les fichiers requis dans un endroit où ils pouvaient être trouvés, j'ai réussi à le faire fonctionner :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X