source: chapter05/libstdc++.xml@ d9bec1e

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

Automatic merge of trunk into multilib

  • Property mode set to 100644
File size: 4.9 KB
RevLine 
[89afa22]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
[459d493]8<sect1 id="ch-tools-libstdcpp" role="wrap">
9 <?dbhtml filename="gcc-libstdc++.html"?>
[89afa22]10
11 <sect1info condition="script">
[714599f]12 <productname>gcc-libstdc++</productname>
[89afa22]13 <productnumber>&gcc-version;</productnumber>
14 <address>&gcc-url;</address>
15 </sect1info>
16
[459d493]17 <title>Libstdc++ from GCC-&gcc-version;</title>
[89afa22]18
[459d493]19 <indexterm zone="ch-tools-libstdcpp">
[89afa22]20 <primary sortas="a-GCC">GCC</primary>
[6dfcfecc]21 <secondary>tools, libstdc++ pass 1</secondary>
[89afa22]22 </indexterm>
23
24 <sect2 role="package">
25 <title/>
26
[a26f29f]27 <para>Libstdc++ is the standard C++ library. It is needed
[1067bac]28 to compile C++ code
29 (part of GCC is written in C++), but we had to defer its installation
30 when we built <xref linkend="ch-tools-gcc-pass1"/>
[6dfcfecc]31 because it depends on glibc, which was not yet available in the target
32 directory.
[1067bac]33 </para>
[89afa22]34
35 <segmentedlist>
36 <segtitle>&buildtime;</segtitle>
37 <segtitle>&diskspace;</segtitle>
38
39 <seglistitem>
[6dfcfecc]40 <seg>&libstdcpp-tmpp1-sbu;</seg>
41 <seg>&libstdcpp-tmpp1-du;</seg>
[89afa22]42 </seglistitem>
43 </segmentedlist>
44
45 </sect2>
46
47 <sect2 role="installation">
48 <title>Installation of Target Libstdc++</title>
49
50 <note>
51 <para><application>Libstdc++</application> is part of the GCC sources.
52 You should first unpack the GCC tarball and change to the
53 <filename>gcc-&gcc-version;</filename> directory.</para>
54 </note>
55
[6dfcfecc]56 <para>Create a separate build directory for libstdc++ and enter it:</para>
[89afa22]57
[f1dd547]58<screen><userinput remap="pre">mkdir -v build
59cd build</userinput></screen>
[89afa22]60
[6dfcfecc]61 <para>Prepare libstdc++ for compilation:</para>
[89afa22]62
[f1dd547]63<screen><userinput remap="configure">../libstdc++-v3/configure \
[3dc9543]64 --host=$LFS_TGT \
[6dfcfecc]65 --build=$(../config.guess) \
66 --prefix=/usr \
[3dc9543]67 --disable-multilib \
[6dfcfecc]68 --disable-nls \
[3dc9543]69 --disable-libstdcxx-pch \
[89afa22]70 --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version;</userinput></screen>
71
72 <variablelist>
73 <title>The meaning of the configure options:</title>
74
75 <varlistentry>
76 <term><parameter>--host=...</parameter></term>
77 <listitem>
[ceebda5]78 <para>Specifies that the cross compiler we have just built
79 should be used instead of the one in
80 <filename>/usr/bin</filename>.</para>
[89afa22]81 </listitem>
82 </varlistentry>
[6dfcfecc]83
84 <varlistentry arch="ml_32,ml_x32,ml_all">
85 <term><parameter>--disable-multilib</parameter></term>
[89afa22]86 <listitem>
[6dfcfecc]87 <para>Even when building the multilib version, this switch is
88 given. This is because the additionally built libraries are
89 not required in this stage and some disk space and compile
90 time can be saved.</para>
[89afa22]91 </listitem>
92 </varlistentry>
[6dfcfecc]93
[89afa22]94 <varlistentry>
95 <term><parameter>--disable-libstdcxx-pch</parameter></term>
96 <listitem>
97 <para>This switch prevents the installation of precompiled
98 include files, which are not needed at this stage.</para>
99 </listitem>
100 </varlistentry>
101
102 <varlistentry>
[c5be634]103 <term><parameter>--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version;</parameter></term>
[89afa22]104 <listitem>
[174d1bf]105 <para>This specifies the installation directory for include files.
106 Because libstdc++ is the standard C++ library for LFS, this
107 directory should match the location where the C++ compiler
108 (<command>$LFS_TGT-g++</command>) would search for the
109 standard C++ include files. In a normal build, this information
[6dfcfecc]110 is automatically passed to the libstdc++ <command>configure</command>
[edbeeb5]111 options from the top level directory. In our case, this information
[174d1bf]112 must be explicitly given.
113 The C++ compiler will prepend the sysroot path
114 <filename class="directory">$LFS</filename> (specified building
115 GCC pass 1) to the include file search path, so it will actually
116 search in
[2cf3c176]117 <filename class="directory">$LFS/tools/$LFS_TGT/include/c++/&gcc-version;</filename>.
118 The combination of the <parameter>DESTDIR</parameter>
[174d1bf]119 variable (in the <command>make install</command> command below)
120 and this switch ensures to install the headers there.</para>
[89afa22]121 </listitem>
122 </varlistentry>
123
124 </variablelist>
125
126 <para>Compile libstdc++ by running:</para>
127
128<screen><userinput remap="make">make</userinput></screen>
129
130 <para>Install the library:</para>
131
[6dfcfecc]132<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
[89afa22]133
134 </sect2>
135
136 <sect2 role="content">
137 <title/>
138
139 <para>Details on this package are located in
140 <xref linkend="contents-gcc" role="."/></para>
141
142 </sect2>
143
144</sect1>
Note: See TracBrowser for help on using the repository browser.