ข้อผิดพลาดในการคอมไพล์ GLib (ffi.h) แต่ติดตั้ง libffi แล้ว


119

หลังจากที่มีการกำหนดค่าที่ประสบความสำเร็จให้ทางออกกับ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

1
คุณควรตรวจสอบ config.log เพื่อดูว่ามันพูดถึง ffi อย่างไร อาจจะไม่พบ แต่สคริปต์มีข้อผิดพลาดและไม่ออกพร้อมข้อผิดพลาด อาจสับสนกับไดเร็กทอรี multilib include ใหม่ ตรวจสอบด้วยว่าสวิตช์ -I ที่เหมาะสมถูกส่งผ่านไปยังคอมไพเลอร์หรือไม่
Jester

คำตอบ:


270

หากคุณมีระบบปฏิบัติการ Linux ที่ใช้ Debian พร้อมกับapt-get:

sudo apt-get install libffi-dev

ด้วยระบบปฏิบัติการ Redhat-base:

yum install libffi-devel

ด้วย Alpine Linux:

apk add libffi-dev

6
หรือหากคุณใช้ระบบปฏิบัติการที่ใช้ Redhat ให้ใช้ yum install libffi-devel
Yonatan

4
โปรดทราบว่าถ้าคุณจะข้ามรวบรวมกะล่อนในระบบ 64 บิตสำหรับ 32bit libffi-dev:i386แล้วคุณจะต้องติดตั้ง มันไม่ชัดเจนสำหรับฉัน :)
Björn Lindqvist

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

ตอนนี้การรวมจะถูกติดตั้ง${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 ด้วยตนเองสำหรับตำแหน่งของ ffi.h ในการกำหนดค่า


2

ตรวจสอบเวอร์ชัน GCC ของคุณและจดบันทึกรายการนี้ใน Debian Bug Archive: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523869

มันเป็นทางออกสุดท้ายสำหรับปัญหาเฉพาะของฉัน (ดูเหมือนทุกอย่างที่คุณรายงาน แต่ไม่สามารถแก้ไขได้ด้วยวิธีแก้ปัญหาด้านบน) ... ปัญหาของฉันไม่เกี่ยวข้องกับ LIBFFI เลย


1

กระทู้เก่า แต่อย่างไรก็ตาม ...

หลังจากวางไฟล์ที่ต้องการในตำแหน่งที่สามารถพบได้ฉันก็ใช้งานได้:

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

3
symlink จะไม่อ่อนโยนกว่าสำเนาหรือไม่?
CousinCocaine
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.