GLib derleme hatası (ffi.h), ancak libffi kurulu


119

Başarılı bir yapılandırmadan sonra, kırpılmış olarak çıkış yapın

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

Libffi yükledim ve locate ffi.h şunu verir:

/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
Ffi hakkında ne yazdığını görmek için config.log dosyasını kontrol etmelisiniz. Belki bulamıyor, ancak komut dosyası hatalı ve bir hata ile çıkmıyor. Muhtemelen yeni multilib içerme dizini ile karıştırılmıştır. Ayrıca uygun -I anahtarının derleyiciye geçirilip geçirilmediğini kontrol edin.
Jester

Yanıtlar:


270

Debian tabanlı bir Linux işletim sisteminiz varsa apt-get:

sudo apt-get install libffi-dev

Redhat tabanlı bir işletim sistemi ile:

yum install libffi-devel

Alpine Linux ile:

apk add libffi-dev

6
Alternatif olarak, Redhat tabanlı işletim sistemi kullanıyorsanız yum install libffi-devel
Yonatan

4
32bit için 64 bitlik bir sistemde glib'i çapraz derliyorsanız, yüklemeniz gerektiğini unutmayın libffi-dev:i386. Benim için açık değildi. :)
Björn Lindqvist

6

Kaynak kodundan libffi 3.0.9 compling zaman include/Makefile.iniçinde içermektedir yükler ${PREFIX}/lib/libffi-3.0.9/include directory. Eminim bunun HARİKA bir nedeni vardır, ama bundan rahatsızım.

Bu satır libffi derlerken bunu düzeltir:

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

Içerir şimdi yüklenecek ${PREFIX}/include, ki bu /usr/local/includebenim için.

Tam tarifim:

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

Yapılandırmada ffi.h'nin konumu için LIBFFI_CFLAGS'nin manuel olarak ayarlanmasıyla çözüldü



1

Eski bir konu, ama her neyse ...

Gerekli dosyaları bulunabilecekleri bir yere koyduktan sonra çalıştırdım:

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

3
Bir sembolik bağlantı, bir kopyadan çok daha nazik olmaz mıydı?
CousinCocaine
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.