A biblioteca Libffi fornece uma interface de programação portável e de alto nível para várias convenções de chamada. Isso permite a um(a) programador(a) chamar qualquer função especificada por uma descrição de interface de chamada em tempo de execução.
FFI significa Foreign Function Interface. Uma FFI permite a um aplicativo escrito em uma linguagem chamar um aplicativo escrito em outra linguagem. Especificamente, Libffi consegue fornecer uma ponte entre um interpretador, como Perl ou Python, e sub-rotinas da biblioteca compartilhada escrita em C, ou em C++.
          
            Assim como o GMP, o Libffi constrói com otimizações específicas
            para o processador em uso. Se construir para outro sistema, mude
            o valor do parâmetro --with-gcc-arch= no comando a
            seguir para um nome de arquitetura totalmente implementado por
            ambos a CPU do
            anfitrião e a CPU naquele sistema. Se isso não for feito, todos
            os aplicativos que se vincularem a libffi deflagarão Erros de Operação Ilegal. Se
            você não conseguir descobrir um valor seguro para ambas as CPUs,
            substitua o parâmetro por --without-gcc-arch para produzir uma biblioteca
            genérica.
          
Prepare Libffi para compilação:
./configure --prefix=/usr    \
            --disable-static \
            --with-gcc-arch=native
        O significado da opção de configure:
--with-gcc-arch=native
            Garante que o GCC otimize para o sistema atual. Se isso não for especificado, [então] o sistema é presumido e o código gerado possivelmente não esteja correto. Se o código gerado será copiado de um sistema nativo para um sistema menos capaz, [então] use o sistema menos capaz como um parâmetro. Para detalhes acerca de tipos alternativos de sistema, vejam-se as opções de x86 no manual do GCC.
Compile o pacote:
make
Para testar os resultados, emita:
make check
Instale o pacote:
make install