web-dev-qa-db-ja.com

GLibコンパイルエラー(ffi.h)ですが、libffiはインストールされています

構成が成功したら、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
116
deltaluca

DebianベースのLinux OSにapt-getがある場合:

Sudo apt-get install libffi-dev

RedhatベースのOSの場合:

yum install libffi-devel
268

ソースコードから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
6
Mark Solaris

Configureのffi.hの場所にLIBFFI_CFLAGSを手動で設定することにより解決

3
deltaluca

GCCのバージョンを確認し、Debian Bug Archiveのこのエントリに注意してください。 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523869

これは私の特定の問題に対する最終的な解決策でした(報告されたものとまったく同じように見えましたが、上記の解決策では解決できませんでした)...私の問題はLIBFFIとはまったく関係ありませんでした。

2
mindwarpstudios

古いスレッドですが、とにかく...

必要なファイルを見つけられる場所に置いた後、私はそれを機能させました:

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