source: chapter08/libffi.xml@ 3ebe876

multilib
Last change on this file since 3ebe876 was 355d761, checked in by Thomas Trepl (Moody) <thomas@…>, 2 years ago

Automatic merge of trunk into multilib

  • Property mode set to 100644
File size: 6.3 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>
29
30 <segmentedlist>
31 <segtitle>&buildtime;</segtitle>
32 <segtitle>&diskspace;</segtitle>
33
34 <seglistitem>
[6dfcfecc]35 <seg>&libffi-fin-sbu;</seg>
36 <seg>&libffi-fin-du;</seg>
[b0aabe0]37 </seglistitem>
38 </segmentedlist>
39
40 </sect2>
41
42 <sect2 role="installation">
[e03d5e49]43 <title>Installation of Libffi</title>
[b0aabe0]44
[8dbae30]45 <note>
46 <para>Similar to GMP, libffi builds with optimizations specific
[ab7af9e]47 to the processor in use. If building for another system, change the
48 value of the <parameter>--with-gcc-arch=</parameter> parameter in the
49 following command to an architecture name fully implemented by the
50 CPU on that system.
[8dbae30]51 If this is not done, all applications that link to libffi will trigger
52 Illegal Operation Errors.</para>
53 </note>
[6dfcfecc]54
[b0aabe0]55 <para>Prepare libffi for compilation:</para>
56
[3ba82a8]57 <screen><userinput remap="configure">./configure --prefix=/usr \
58 --disable-static \
59 --with-gcc-arch=native \
[c3f8922]60 --disable-exec-static-tramp</userinput></screen>
[b8b65b7]61
62 <variablelist>
63 <title>The meaning of the configure option:</title>
64
65 <varlistentry>
66 <term><parameter>--with-gcc-arch=native</parameter></term>
67 <listitem>
[6dfcfecc]68 <para>Ensure GCC optimizes for the current system. If this
[b8b65b7]69 is not specified, the system is guessed and the code generated
70 may not be correct for some systems. If the generated code
[d672ab7]71 will be copied from the native system to a less capable
72 system, use the less capable system as a parameter. For details
73 about alternative system types, see <ulink
[2c53f52]74 url='https://gcc.gnu.org/onlinedocs/gcc-&gcc-version;/gcc/x86-Options.html'>
[6dfcfecc]75 the x86 options in the GCC manual</ulink>.</para>
[b8b65b7]76 </listitem>
77 </varlistentry>
78
[c3f8922]79 <varlistentry>
[0a99387]80 <!-- To editors: try to remove it once GJS fixed (at GNOME 43) -->
[c3f8922]81 <term><parameter>--disable-exec-static-tramp</parameter></term>
82 <listitem>
83 <para>Disable static trampoline support. It's a new security
84 feature in libffi, but some BLFS packages (notably
[0a99387]85 <application>GJS</application>) have not been adapted for it.</para>
[c3f8922]86 </listitem>
87 </varlistentry>
88
[b8b65b7]89 </variablelist>
[b0aabe0]90
91 <para>Compile the package:</para>
92
93<screen><userinput remap="make">make</userinput></screen>
94
95 <para>To test the results, issue:</para>
96
97<screen><userinput remap="test">make check</userinput></screen>
98
99 <para>Install the package:</para>
100
101<screen><userinput remap="install">make install</userinput></screen>
102
103 </sect2>
104
[6dfcfecc]105 <!-- - - - - - - - - - -->
106 <!-- Multilib - 32bit -->
107 <!-- - - - - - - - - - -->
[fd48baa]108
109 <sect2 arch="ml_32,ml_all" role="installation">
[6dfcfecc]110 <title>Installation of Libffi - 32bit</title>
[b3f1ebb3]111
112 <para>Clean previous build:</para>
113
114<screen><userinput remap="pre">make distclean</userinput></screen>
115
116 <para>Prepare Libffi for compilation:</para>
117
[6dfcfecc]118<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" ./configure \
[cd3fd92]119 --host=i686-pc-linux-gnu \
[b3f1ebb3]120 --prefix=/usr \
[cd3fd92]121 --libdir=/usr/lib32 \
[b3f1ebb3]122 --disable-static \
123 --with-gcc-arch=i686 \
[cd3fd92]124 --disable-exec-static-tramp</userinput></screen>
[b3f1ebb3]125
126 <para>Compile the package:</para>
127
128<screen><userinput remap="make">make</userinput></screen>
129
130 <para>To test the results, issue:</para>
131
132<screen><userinput remap="test">make check</userinput></screen>
133
134 <para>Install the package:</para>
135
136<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
[0ebda11]137cp -Rv DESTDIR/usr/lib32/* /usr/lib32
[b3f1ebb3]138rm -rf DESTDIR</userinput></screen>
139
[6dfcfecc]140 </sect2><!-- m32 -->
[b3f1ebb3]141
[6dfcfecc]142 <!-- - - - - - - - - - -->
143 <!-- Multilib - x32bit -->
144 <!-- - - - - - - - - - -->
[fd48baa]145
146 <sect2 arch="ml_x32,ml_all" role="installation">
[bd1abf6]147 <title>Installation of Libffi - x32bit</title>
[b3f1ebb3]148
149 <para>Clean previous build:</para>
150
151<screen><userinput remap="pre">make distclean</userinput></screen>
152
153 <para>Prepare Libffi for compilation:</para>
154
[6dfcfecc]155<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" ./configure \
[cd3fd92]156 --host=x86_64-unknown-linux-gnux32 \
[6dfcfecc]157 --prefix=/usr \
[0ebda11]158 --libdir=/usr/libx32 \
[cd3fd92]159 --disable-static \
[6dfcfecc]160 --with-gcc-arch=x86_64 \
[cd3fd92]161 --disable-exec-static-tramp</userinput></screen>
[b3f1ebb3]162
163 <para>Compile the package:</para>
164
165<screen><userinput remap="make">make</userinput></screen>
166
167 <para>To test the results, issue:</para>
168
169<screen><userinput remap="test">make check</userinput></screen>
170
171 <para>Install the package:</para>
172
173<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
[0ebda11]174cp -Rv DESTDIR/usr/libx32/* /usr/libx32
[b3f1ebb3]175rm -rf DESTDIR</userinput></screen>
176
[6dfcfecc]177 </sect2><!-- mx32 -->
[b3f1ebb3]178
[b0aabe0]179 <sect2 id="contents-libffi" role="content">
[e03d5e49]180 <title>Contents of Libffi</title>
[b0aabe0]181
182 <segmentedlist>
183 <segtitle>Installed library</segtitle>
184
185 <seglistitem>
186 <seg>libffi.so</seg>
187 </seglistitem>
188 </segmentedlist>
189
190 <variablelist>
191 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
192 <?dbfo list-presentation="list"?>
193 <?dbhtml list-presentation="table"?>
194
195 <varlistentry id="libffi">
196 <term><filename class="libraryfile">libffi</filename></term>
197 <listitem>
[4c8c128]198 <para>contains the foreign function interface API functions</para>
[b0aabe0]199 <indexterm zone="ch-system-libffi">
200 <primary sortas="c-libffi">libffi</primary>
201 </indexterm>
202 </listitem>
203 </varlistentry>
204 </variablelist>
205
206 </sect2>
207
208</sect1>
Note: See TracBrowser for help on using the repository browser.