GLib compile error (ffi.h), but libffi is installed

后端 未结 5 1914
囚心锁ツ
囚心锁ツ 2021-02-02 04:36

After a succesful configure, make exits with snipped

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


        
相关标签:
5条回答
  • 2021-02-02 05:14

    If you have a Debian-based Linux OS with apt-get:

    sudo apt-get install libffi-dev
    

    With a Redhat-base OS:

    yum install libffi-devel
    

    With Alpine Linux:

    apk add libffi-dev
    
    0 讨论(0)
  • 2021-02-02 05:19

    When compling libffi 3.0.9 from source code, the include/Makefile.in installs the includes in the ${PREFIX}/lib/libffi-3.0.9/include directory. I'm sure there's a WONDERFUL reason for that, but I'm annoyed by it.

    This line fixes it, when compiling libffi:

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

    The includes will now be installed in ${PREFIX}/include, which is /usr/local/include for me.

    My full recipe is:

    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
    
    0 讨论(0)
  • 2021-02-02 05:22

    An old thread, but anyway...

    After putting the required files in a location where they could be found, I got it working:

    cp /usr/include/x86_64-linux-gnu/ffi* /usr/local/include/
    cp /usr/lib/libffi.so /usr/local/lib/
    
    0 讨论(0)
  • 2021-02-02 05:27

    Check your GCC version and note this entry in the Debian Bug Archive: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523869

    It was the final solution to my particular issue (it looked exactly like what you report, but couldn't be solved with the solution above)... my problem had nothing to do with LIBFFI at all.

    0 讨论(0)
  • 2021-02-02 05:38

    Resolved by manually setting LIBFFI_CFLAGS for location of ffi.h in configure

    0 讨论(0)
提交回复
热议问题