summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter08/libffi.html
diff options
context:
space:
mode:
authorSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
committerSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
commit2203e654b389586650d553251b04544a34f189bf (patch)
tree0125b69fc70a2506c53158ba2020993a5b8985b7 /lfs-12.2-sysv/chapter08/libffi.html
parent200d528e55ca954d37769f4d143f10c9519b00e7 (diff)
downloadsn4il-site-2203e654b389586650d553251b04544a34f189bf.tar.gz
sn4il-site-2203e654b389586650d553251b04544a34f189bf.zip
LFS 12.2
Diffstat (limited to 'lfs-12.2-sysv/chapter08/libffi.html')
-rw-r--r--lfs-12.2-sysv/chapter08/libffi.html210
1 files changed, 210 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter08/libffi.html b/lfs-12.2-sysv/chapter08/libffi.html
new file mode 100644
index 0000000..b3f7d9e
--- /dev/null
+++ b/lfs-12.2-sysv/chapter08/libffi.html
@@ -0,0 +1,210 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ 8.51. Libffi-3.4.6
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 8. Установка базового системного программного обеспечения
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="libelf.html" title=
+ "Libelf из Elfutils-0.191">Пред.</a>
+ <p>
+ Libelf из Elfutils-0.191
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="Python.html" title="Python-3.12.5">След.</a>
+ <p>
+ Python-3.12.5
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-system-libffi" name="ch-system-libffi"></a>8.51. Libffi-3.4.6
+ </h1>
+ <div class="wrap" lang="ru" xml:lang="ru">
+ <div class="package" lang="ru" xml:lang="ru">
+ <p>
+ Библиотека Libffi предоставляет переносимый высокоуровневый
+ программный интерфейс для различных соглашений о вызовах. Это
+ позволяет программисту вызывать любую функцию, указанную в описании
+ интерфейса вызова во время выполнения.
+ </p>
+ <p>
+ FFI расшифровывается как интерфейс внешних функций. FFI позволяет
+ программе, написанной на одном языке, вызывать программу,
+ написанную на другом языке. В частности, Libffi может обеспечить
+ связь между интерпретатором, таким как Perl или Python, и
+ подпрограммами общей библиотеки, написанными на C или C++.
+ </p>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Приблизительное время сборки:</strong>
+ <span class="segbody">1.7 SBU</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Требуемое дисковое
+ пространство:</strong> <span class="segbody">11 MB</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="installation" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 8.51.1. Установка пакета Libffi
+ </h2>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Как и GMP, Libffi собирается с учетом оптимизаций, специфичных
+ для используемого процессора. При сборке для другой системы
+ измените значение параметра <em class=
+ "parameter"><code>--with-gcc-arch=</code></em> в следующей
+ команде на имя архитектуры, полностью реализованной процессором в
+ этой системе. Если этого не сделать, все приложения, ссылающиеся
+ на <code class="filename">libffi</code>, будут вызывать ошибку
+ <span class="quote">«<span class="quote">Illegal Operation -
+ недопустимая операция</span>»</span>.
+ </p>
+ </div>
+ <p>
+ Подготовьте Libffi к компиляции:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">./configure --prefix=/usr \
+ --disable-static \
+ --with-gcc-arch=native</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение параметров configure:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--with-gcc-arch=native</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Убедитесь, что GCC оптимизируется для текущей системы. Если
+ значение не указано, то архитектура системы угадывается и
+ сгенерированный код может быть неправильным. Если
+ сгенерированный код будет скопирован из родной системы в
+ менее мощную, используйте архитектуру менее мощной системы в
+ качестве параметра. Дополнительные сведения об альтернативных
+ типах систем смотрите в <a class="ulink" href=
+ "https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/x86-Options.html">
+ описании параметров x86 в руководстве GCC</a>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Скомпилируйте пакет:
+ </p>
+ <pre class="userinput"><kbd class="command">make</kbd></pre>
+ <p>
+ Чтобы протестировать пакет, выполните:
+ </p>
+ <pre class="userinput"><kbd class="command">make check</kbd></pre>
+ <p>
+ Установите пакет:
+ </p>
+ <pre class="userinput"><kbd class="command">make install</kbd></pre>
+ </div>
+ <div class="content" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="contents-libffi" name="contents-libffi"></a>8.51.2.
+ Содержимое пакета Libffi
+ </h2>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Установленные библиотеки:</strong>
+ <span class="segbody">libffi.so</span>
+ </div>
+ </div>
+ </div>
+ <div class="variablelist">
+ <h3>
+ Краткое описание
+ </h3>
+ <table border="0" class="variablelist">
+ <colgroup>
+ <col align="left" valign="top" />
+ <col />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <p>
+ <a id="libffi" name="libffi"></a><span class=
+ "term"><code class="filename">libffi</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Содержит внешний интерфейс для API-функций
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="libelf.html" title=
+ "Libelf из Elfutils-0.191">Пред.</a>
+ <p>
+ Libelf из Elfutils-0.191
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="Python.html" title="Python-3.12.5">След.</a>
+ <p>
+ Python-3.12.5
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>