%general-entities; ]> gcc-libstdc++ &gcc-version;
&gcc-url;
Libstdc++ from GCC-&gcc-version; GCC tools, libstdc++ pass 1 <para>Libstdc++ is the standard C++ library. It is needed to compile C++ code (part of GCC is written in C++), but we had to defer its installation when we built <xref linkend="ch-tools-gcc-pass1"/> because Libstdc++ depends on Glibc, which was not yet available in the target directory. </para> <segmentedlist> <segtitle>&buildtime;</segtitle> <segtitle>&diskspace;</segtitle> <seglistitem> <seg>&libstdcpp-tmpp1-sbu;</seg> <seg>&libstdcpp-tmpp1-du;</seg> </seglistitem> </segmentedlist> </sect2> <sect2 role="installation"> <title>Installation of Target Libstdc++ Libstdc++ is part of the GCC sources. You should first unpack the GCC tarball and change to the gcc-&gcc-version; directory. Create a separate build directory for Libstdc++ and enter it: mkdir -v build cd build Prepare Libstdc++ for compilation: ../libstdc++-v3/configure \ --host=$LFS_TGT \ --build=$(../config.guess) \ --prefix=/usr \ --disable-multilib \ --disable-nls \ --disable-libstdcxx-pch \ --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version; The meaning of the configure options: --host=... Specifies that the cross-compiler we have just built should be used instead of the one in /usr/bin. --disable-libstdcxx-pch This switch prevents the installation of precompiled include files, which are not needed at this stage. --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version; This specifies the installation directory for include files. Because Libstdc++ is the standard C++ library for LFS, this directory should match the location where the C++ compiler ($LFS_TGT-g++) would search for the standard C++ include files. In a normal build, this information is automatically passed to the Libstdc++ configure options from the top level directory. In our case, this information must be explicitly given. The C++ compiler will prepend the sysroot path $LFS (specified when building GCC-pass1) to the include file search path, so it will actually search in $LFS/tools/$LFS_TGT/include/c++/&gcc-version;. The combination of the DESTDIR variable (in the make install command below) and this switch causes the headers to be installed there. Compile Libstdc++ by running: make Install the library: make DESTDIR=$LFS install Remove the libtool archive files because they are harmful for cross-compilation: rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la <para>Details on this package are located in <xref linkend="contents-gcc" role="."/></para> </sect2> </sect1>