web-dev-qa-db-fra.com

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

Après une configuration réussie, faire des sorties avec snipped

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

J'ai libffi installé, et localisez 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
116
deltaluca

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 Redhat-base:

yum install libffi-devel
268

Lorsque vous complétez libffi 3.0.9 à partir du code source, le include/Makefile.in installe l'inclus dans le ${PREFIX}/lib/libffi-3.0.9/include directory. Je suis sûr qu'il y a une Merveilleuse 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

Le includes va maintenant être installé dans ${PREFIX}/include, lequel 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
6
Mark Solaris

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

3
deltaluca

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

C'était la solution finale à mon problème particulier (cela ressemblait exactement à ce que vous rapportez, mais vous ne pouviez pas le résoudre avec la solution ci-dessus) ... mon problème n'avait rien à voir avec LIBFFI.

2
mindwarpstudios

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

Après avoir placé les fichiers requis dans un emplacement où ils pourraient être trouvés, je l'ai fait fonctionner:

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