Libffi ライブラリは、さまざまな呼出規約(calling conventions)に対しての、移植性に優れた高レベルのプログラミングインターフェースを提供します。 このライブラリを用いることで、プログラム実行時に呼出インターフェース記述(call interface description)による関数を指定して呼び出すことができるようになります。
FFI は Foreign Function Interface を表します。 FFI は、1 つの言語で書かれたプログラムから、別の言語で書かれたプログラムを呼び出せるようにするものです。 特に Libffi は、Perl や Python のようなインタープリターや、C, C++ で書かれた共有ライブラリサブルーチン間のブリッジ機能を提供します。
![[注記]](../images/note.png) 
          
            GMP と同じように Libffi では、利用中のプロセッサーに応じた最適化を行なってビルドされます。
            異なるシステムに向けてのビルドを行う場合は、以下のコマンドにおいて --with-gcc-arch= を使って、ホスト CPU
            とそのシステム上の CPU の 双方の
            実装を完全に表すアーキテクチャー名に変更してください。 そうしなかった場合には、libffi をリンクするアプリケーションにおいて Illegal Operation
            エラーを発生させることになります。 双方の CPU に対しての適切な値が分からない場合は --without-gcc-arch を指定して、汎用ライブラリを生成してください。
          
Libffi をコンパイルするための準備をします。
./configure --prefix=/usr    \
            --disable-static \
            --with-gcc-arch=native
        configure オプションの意味
--with-gcc-arch=native
            現状のシステムに応じて GCC が最適化されるようにします。 仮にこれを指定しなかった場合、システムを誤認して誤ったコードを生成してしまう場合があります。 生成されたコードが、より劣ったシステム向けのネイティブコードをコピーしていたとすると、より劣ったシステムに対するパラメーターを指定することとなります。 システムに応じた詳細は the x86 options in the GCC manual を参照してください。
パッケージをコンパイルします。
make
ビルド結果をテストする場合は以下を実行します。
make check
パッケージをインストールします。
make install