GLib संकलन त्रुटि (ffi.h), लेकिन libffi स्थापित है


119

एक संक्षिप्त विन्यास के बाद, स्निप के साथ बाहर निकलें करें

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 के बारे में क्या कहता है। शायद यह नहीं मिल रहा है, लेकिन स्क्रिप्ट छोटी है और एक त्रुटि के साथ बाहर नहीं निकलती है। संभवतः यह नए मल्टीबिल द्वारा शामिल डायरेक्टरी में उलझा हुआ है। यह भी देखें कि क्या उपयुक्त -I स्विच संकलक को दिया गया है।
Jester

जवाबों:


270

यदि आपके पास डेबियन-आधारित लिनक्स ओएस है apt-get:

sudo apt-get install libffi-dev

रेडहैट-बेस OS के साथ:

yum install libffi-devel

अल्पाइन लिनक्स के साथ:

apk add libffi-dev

6
वैकल्पिक रूप से, यदि आप Redhat आधारित OS का उपयोग कर रहे हैं, तो yum को libffi-devel स्थापित करें
Yonatan

4
ध्यान दें कि यदि आप 32 बिट के लिए 64 बिट सिस्टम पर क्रॉस-संकलन कर रहे हैं तो आपको इंस्टॉल करने की आवश्यकता है libffi-dev:i386। यह मेरे लिए स्पष्ट नहीं था। :)
ब्योर्न लिंडक्विस्ट

6

जब स्रोत कोड से libffi 3.0.9 संकलित किया जाता है, तो इनस्टॉल include/Makefile.inमें शामिल होता है ${PREFIX}/lib/libffi-3.0.9/include directory। मुझे यकीन है कि उसके लिए एक चमत्कारिक कारण है, लेकिन मैं इससे नाराज हूं।

यह लाइन इसे ठीक करती है, जब लिबफी का संकलन किया जाता है:

/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

कॉन्फ़िगर में ffi.h के स्थान के लिए LIBFFI_CFLAGS को मैन्युअल रूप से सेट करके हल किया गया


2

अपने GCC संस्करण की जाँच करें और डेबियन बग आर्क में इस प्रविष्टि पर ध्यान दें: 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
क्या एक सिम्पीनल कॉपी से ज्यादा कोमल नहीं होगा?
कज़िनकोकेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.