source: chapter08/libffi.xml@ a2434bd4

multilib
Last change on this file since a2434bd4 was 0a12f0a, checked in by Thomas Trepl <thomas@…>, 18 months ago

Automatic merge of trunk into multilib

  • Property mode set to 100644
File size: 6.6 KB
RevLine 
[b0aabe0]1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-system-libffi" role="wrap">
9 <?dbhtml filename="libffi.html"?>
10
11 <sect1info condition="script">
12 <productname>libffi</productname>
13 <productnumber>&libffi-version;</productnumber>
14 <address>&libffi-url;</address>
15 </sect1info>
16
[e03d5e49]17 <title>Libffi-&libffi-version;</title>
[b0aabe0]18
19 <indexterm zone="ch-system-libffi">
20 <primary sortas="a-libffi">libffi</primary>
21 </indexterm>
22
23 <sect2 role="package">
24 <title/>
25
[e03d5e49]26 <para>The Libffi library provides a portable, high level programming
[b0aabe0]27 interface to various calling conventions. This allows a programmer to call
28 any function specified by a call interface description at run time.</para>
[e9c46b3]29
30 <para>FFI stands for Foreign Function Interface. An FFI allows a program written
31 in one language to call a program written in another language. Specifically,
32 Libffi can provide a bridge between an interpreter like Perl, or Python, and
33 shared library subroutines written in C, or C++.</para>
[b0aabe0]34
35 <segmentedlist>
36 <segtitle>&buildtime;</segtitle>
37 <segtitle>&diskspace;</segtitle>
38
39 <seglistitem>
[6dfcfecc]40 <seg>&libffi-fin-sbu;</seg>
41 <seg>&libffi-fin-du;</seg>
[b0aabe0]42 </seglistitem>
43 </segmentedlist>
44
45 </sect2>
46
47 <sect2 role="installation">
[e03d5e49]48 <title>Installation of Libffi</title>
[b0aabe0]49
[8dbae30]50 <note>
[e9c46b3]51 <para>Like GMP, Libffi builds with optimizations specific
[ab7af9e]52 to the processor in use. If building for another system, change the
53 value of the <parameter>--with-gcc-arch=</parameter> parameter in the
54 following command to an architecture name fully implemented by the
55 CPU on that system.
[20d6b70]56 If this is not done, all applications that link to
57 <filename class='libraryfile'>libffi</filename> will trigger
[8dbae30]58 Illegal Operation Errors.</para>
59 </note>
[6dfcfecc]60
[e9c46b3]61 <para>Prepare Libffi for compilation:</para>
[b0aabe0]62
[3ba82a8]63 <screen><userinput remap="configure">./configure --prefix=/usr \
64 --disable-static \
65 --with-gcc-arch=native \
[c3f8922]66 --disable-exec-static-tramp</userinput></screen>
[b8b65b7]67
68 <variablelist>
69 <title>The meaning of the configure option:</title>
70
71 <varlistentry>
72 <term><parameter>--with-gcc-arch=native</parameter></term>
73 <listitem>
[6dfcfecc]74 <para>Ensure GCC optimizes for the current system. If this
[b8b65b7]75 is not specified, the system is guessed and the code generated
[e9c46b3]76 may not be correct. If the generated code
[d672ab7]77 will be copied from the native system to a less capable
78 system, use the less capable system as a parameter. For details
79 about alternative system types, see <ulink
[2c53f52]80 url='https://gcc.gnu.org/onlinedocs/gcc-&gcc-version;/gcc/x86-Options.html'>
[6dfcfecc]81 the x86 options in the GCC manual</ulink>.</para>
[b8b65b7]82 </listitem>
83 </varlistentry>
84
[c3f8922]85 <varlistentry>
[0a99387]86 <!-- To editors: try to remove it once GJS fixed (at GNOME 43) -->
[c3f8922]87 <term><parameter>--disable-exec-static-tramp</parameter></term>
88 <listitem>
[e9c46b3]89 <para>Disable static trampoline support, a new security
90 feature in Libffi. Some BLFS packages (notably
[0a99387]91 <application>GJS</application>) have not been adapted for it.</para>
[c3f8922]92 </listitem>
93 </varlistentry>
94
[b8b65b7]95 </variablelist>
[b0aabe0]96
97 <para>Compile the package:</para>
98
99<screen><userinput remap="make">make</userinput></screen>
100
101 <para>To test the results, issue:</para>
102
103<screen><userinput remap="test">make check</userinput></screen>
104
105 <para>Install the package:</para>
106
107<screen><userinput remap="install">make install</userinput></screen>
108
109 </sect2>
110
[6dfcfecc]111 <!-- - - - - - - - - - -->
112 <!-- Multilib - 32bit -->
113 <!-- - - - - - - - - - -->
[fd48baa]114
115 <sect2 arch="ml_32,ml_all" role="installation">
[6dfcfecc]116 <title>Installation of Libffi - 32bit</title>
[b3f1ebb3]117
118 <para>Clean previous build:</para>
119
120<screen><userinput remap="pre">make distclean</userinput></screen>
121
122 <para>Prepare Libffi for compilation:</para>
123
[6dfcfecc]124<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" ./configure \
[cd3fd92]125 --host=i686-pc-linux-gnu \
[b3f1ebb3]126 --prefix=/usr \
[cd3fd92]127 --libdir=/usr/lib32 \
[b3f1ebb3]128 --disable-static \
129 --with-gcc-arch=i686 \
[cd3fd92]130 --disable-exec-static-tramp</userinput></screen>
[b3f1ebb3]131
132 <para>Compile the package:</para>
133
134<screen><userinput remap="make">make</userinput></screen>
135
136 <para>To test the results, issue:</para>
137
138<screen><userinput remap="test">make check</userinput></screen>
139
140 <para>Install the package:</para>
141
142<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
[0ebda11]143cp -Rv DESTDIR/usr/lib32/* /usr/lib32
[b3f1ebb3]144rm -rf DESTDIR</userinput></screen>
145
[6dfcfecc]146 </sect2><!-- m32 -->
[b3f1ebb3]147
[6dfcfecc]148 <!-- - - - - - - - - - -->
149 <!-- Multilib - x32bit -->
150 <!-- - - - - - - - - - -->
[fd48baa]151
152 <sect2 arch="ml_x32,ml_all" role="installation">
[bd1abf6]153 <title>Installation of Libffi - x32bit</title>
[b3f1ebb3]154
155 <para>Clean previous build:</para>
156
157<screen><userinput remap="pre">make distclean</userinput></screen>
158
159 <para>Prepare Libffi for compilation:</para>
160
[6dfcfecc]161<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" ./configure \
[cd3fd92]162 --host=x86_64-unknown-linux-gnux32 \
[6dfcfecc]163 --prefix=/usr \
[0ebda11]164 --libdir=/usr/libx32 \
[cd3fd92]165 --disable-static \
[6dfcfecc]166 --with-gcc-arch=x86_64 \
[cd3fd92]167 --disable-exec-static-tramp</userinput></screen>
[b3f1ebb3]168
169 <para>Compile the package:</para>
170
171<screen><userinput remap="make">make</userinput></screen>
172
173 <para>To test the results, issue:</para>
174
175<screen><userinput remap="test">make check</userinput></screen>
176
177 <para>Install the package:</para>
178
179<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
[0ebda11]180cp -Rv DESTDIR/usr/libx32/* /usr/libx32
[b3f1ebb3]181rm -rf DESTDIR</userinput></screen>
182
[6dfcfecc]183 </sect2><!-- mx32 -->
[b3f1ebb3]184
[b0aabe0]185 <sect2 id="contents-libffi" role="content">
[e03d5e49]186 <title>Contents of Libffi</title>
[b0aabe0]187
188 <segmentedlist>
189 <segtitle>Installed library</segtitle>
190
191 <seglistitem>
192 <seg>libffi.so</seg>
193 </seglistitem>
194 </segmentedlist>
195
196 <variablelist>
197 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
198 <?dbfo list-presentation="list"?>
199 <?dbhtml list-presentation="table"?>
200
201 <varlistentry id="libffi">
202 <term><filename class="libraryfile">libffi</filename></term>
203 <listitem>
[e9c46b3]204 <para>Contains the foreign function interface API functions</para>
[b0aabe0]205 <indexterm zone="ch-system-libffi">
206 <primary sortas="c-libffi">libffi</primary>
207 </indexterm>
208 </listitem>
209 </varlistentry>
210 </variablelist>
211
212 </sect2>
213
214</sect1>
Note: See TracBrowser for help on using the repository browser.