Библиотека Libffi предоставляет переносимый высокоуровневый программный интерфейс для различных соглашений о вызовах. Это позволяет программисту вызывать любую функцию, указанную в описании интерфейса вызова во время выполнения.
FFI расшифровывается как интерфейс внешних функций. FFI позволяет программе, написанной на одном языке, вызывать программу, написанную на другом языке. В частности, Libffi может обеспечить связь между интерпретатором, таким как Perl или Python, и подпрограммами общей библиотеки, написанными на C или C++.
![[Примечание]](../images/note.png) 
          
            Как и GMP, Libffi собирается с учетом оптимизаций, специфичных
            для используемого процессора. При сборке для другой системы
            измените значение параметра --with-gcc-arch= в следующей
            команде на имя архитектуры, полностью реализованной процессором в
            этой системе. Если этого не сделать, все приложения, ссылающиеся
            на libffi, будут вызывать ошибку
            «Illegal Operation -
            недопустимая операция».
          
Подготовьте Libffi к компиляции:
./configure --prefix=/usr          \
            --disable-static       \
            --with-gcc-arch=native
        Значение параметров configure:
--with-gcc-arch=native
            Убедитесь, что GCC оптимизируется для текущей системы. Если значение не указано, то архитектура системы угадывается и сгенерированный код может быть неправильным. Если сгенерированный код будет скопирован из родной системы в менее мощную, используйте архитектуру менее мощной системы в качестве параметра. Дополнительные сведения об альтернативных типах систем смотрите в описании параметров x86 в руководстве GCC.
Скомпилируйте пакет:
make
Чтобы протестировать пакет, выполните:
make check
Установите пакет:
make install
Выполните очистку после предыдущей сборки:
make distclean
Подготовьте Libffi к компиляции:
CC="gcc -m32" CXX="g++ -m32" ./configure \
    --host=i686-pc-linux-gnu \
    --prefix=/usr            \
    --libdir=/usr/lib32      \
    --disable-static         \
    --with-gcc-arch=i686
        Скомпилируйте пакет:
make
Чтобы протестировать пакет, выполните:
make check
Установите пакет:
make DESTDIR=$PWD/DESTDIR install cp -Rv DESTDIR/usr/lib32/* /usr/lib32 rm -rf DESTDIR