source: chapter08/libffi.xml@ a2434bd4

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

Automatic merge of trunk into multilib

  • Property mode set to 100644
File size: 6.6 KB
Line 
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
17 <title>Libffi-&libffi-version;</title>
18
19 <indexterm zone="ch-system-libffi">
20 <primary sortas="a-libffi">libffi</primary>
21 </indexterm>
22
23 <sect2 role="package">
24 <title/>
25
26 <para>The Libffi library provides a portable, high level programming
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>
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>
34
35 <segmentedlist>
36 <segtitle>&buildtime;</segtitle>
37 <segtitle>&diskspace;</segtitle>
38
39 <seglistitem>
40 <seg>&libffi-fin-sbu;</seg>
41 <seg>&libffi-fin-du;</seg>
42 </seglistitem>
43 </segmentedlist>
44
45 </sect2>
46
47 <sect2 role="installation">
48 <title>Installation of Libffi</title>
49
50 <note>
51 <para>Like GMP, Libffi builds with optimizations specific
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.
56 If this is not done, all applications that link to
57 <filename class='libraryfile'>libffi</filename> will trigger
58 Illegal Operation Errors.</para>
59 </note>
60
61 <para>Prepare Libffi for compilation:</para>
62
63 <screen><userinput remap="configure">./configure --prefix=/usr \
64 --disable-static \
65 --with-gcc-arch=native \
66 --disable-exec-static-tramp</userinput></screen>
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>
74 <para>Ensure GCC optimizes for the current system. If this
75 is not specified, the system is guessed and the code generated
76 may not be correct. If the generated code
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
80 url='https://gcc.gnu.org/onlinedocs/gcc-&gcc-version;/gcc/x86-Options.html'>
81 the x86 options in the GCC manual</ulink>.</para>
82 </listitem>
83 </varlistentry>
84
85 <varlistentry>
86 <!-- To editors: try to remove it once GJS fixed (at GNOME 43) -->
87 <term><parameter>--disable-exec-static-tramp</parameter></term>
88 <listitem>
89 <para>Disable static trampoline support, a new security
90 feature in Libffi. Some BLFS packages (notably
91 <application>GJS</application>) have not been adapted for it.</para>
92 </listitem>
93 </varlistentry>
94
95 </variablelist>
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
111 <!-- - - - - - - - - - -->
112 <!-- Multilib - 32bit -->
113 <!-- - - - - - - - - - -->
114
115 <sect2 arch="ml_32,ml_all" role="installation">
116 <title>Installation of Libffi - 32bit</title>
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
124<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" ./configure \
125 --host=i686-pc-linux-gnu \
126 --prefix=/usr \
127 --libdir=/usr/lib32 \
128 --disable-static \
129 --with-gcc-arch=i686 \
130 --disable-exec-static-tramp</userinput></screen>
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
143cp -Rv DESTDIR/usr/lib32/* /usr/lib32
144rm -rf DESTDIR</userinput></screen>
145
146 </sect2><!-- m32 -->
147
148 <!-- - - - - - - - - - -->
149 <!-- Multilib - x32bit -->
150 <!-- - - - - - - - - - -->
151
152 <sect2 arch="ml_x32,ml_all" role="installation">
153 <title>Installation of Libffi - x32bit</title>
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
161<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" ./configure \
162 --host=x86_64-unknown-linux-gnux32 \
163 --prefix=/usr \
164 --libdir=/usr/libx32 \
165 --disable-static \
166 --with-gcc-arch=x86_64 \
167 --disable-exec-static-tramp</userinput></screen>
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
180cp -Rv DESTDIR/usr/libx32/* /usr/libx32
181rm -rf DESTDIR</userinput></screen>
182
183 </sect2><!-- mx32 -->
184
185 <sect2 id="contents-libffi" role="content">
186 <title>Contents of Libffi</title>
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>
204 <para>Contains the foreign function interface API functions</para>
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.