Библиотека Libffi предоставляет переносимый высокоуровневый программный интерфейс для различных соглашений о вызовах. Это позволяет программисту вызывать любую функцию, указанную в описании интерфейса вызова во время выполнения.
FFI расшифровывается как интерфейс внешних функций. FFI позволяет программе, написанной на одном языке, вызывать программу, написанную на другом языке. В частности, Libffi может обеспечить связь между интерпретатором, таким как Perl или Python, и подпрограммами общей библиотеки, написанными на C или C++.
Как и 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