📄 gcc.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=gb2312" />
<title>
6.14. GCC-3.4.3
</title>
<link rel="stylesheet" href="../stylesheets/lfs.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1" />
<link rel="stylesheet" href="../stylesheets/lfs-print.css" type="text/css" media="print" />
</head>
<body id="lfs" class="6.1">
<div class="navheader">
<div class="headertitles">
<h4>
Linux From Scratch - Version 6.1
</h4>
<h3>
Chapter 6. 安装系统基础软件
</h3>
</div>
<ul class="headerlinks">
<li class="prev">
<a accesskey="p" href="binutils.html" title="Binutils-2.15.94.0.2.2">后退</a>
<p>
Binutils-2.15.94.0.2.2
</p>
</li>
<li class="next">
<a accesskey="n" href="coreutils.html" title="Coreutils-5.2.1">前进</a>
<p>
Coreutils-5.2.1
</p>
</li>
<li class="up">
<a accesskey="u" href="chapter06.html" title="Chapter 6. 安装系统基础软件">上一级</a>.
</li>
<li class="home">
<a accesskey="h" href="../index.html" title="Linux From Scratch - Version 6.1">回首页</a>
</li>
</ul>
</div>
<div class="wrap" lang="zh_cn" xml:lang="zh_cn">
<div class="titlepage">
<h1 class="sect1">
6.14. GCC-3.4.3
</h1>
</div>
<div class="package" lang="zh_cn" xml:lang="zh_cn">
<p>GCC 软件包包含 GNU 编译器,其中有C和C++编译器。</p>
<div class="segmentedlist">
<div class="seglistitem">
<div class="seg">
<strong><span class="segtitle">预计编译时间:</span></strong> <span class="seg">11.7 SBU</span>
</div>
<div class="seg">
<strong><span class="segtitle">所需磁盘空间:</span></strong> <span class="seg">451 MB</span>
</div>
</div>
</div>
<div class="segmentedlist">
<div class="seglistitem">
<div class="seg">
<strong><span class="segtitle">安装依赖于:</span></strong> <span class="seg">Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo</span>
</div>
</div>
</div>
</div>
<div class="installation" lang="zh_cn" xml:lang="zh_cn">
<div class="titlepage">
<h2 class="sect2">
6.14.1. 安装 GCC
</h2>
</div>
<p>如果你把这个包缺省的优化参数(包括 <em class="parameter"><tt>-march</tt></em> 和 <em class="parameter"><tt>-mcpu</tt></em> 参数)改变的话,它会有些不正常的表现。因此,如果你定义了任何优化参数的话,比如 <tt class="envar">CFLAGS</tt> 和 <tt class="envar">CXXFLAGS</tt>,我们劝你在编译 GCC 时 unset 或修改它们。</p>
<p>首先,运用前一章里用过的 No-Fixincludes 补丁:</p>
<pre class="userinput"><kbd class="command">patch -Np1 -i ../gcc-3.4.3-no_fixincludes-1.patch</kbd></pre>
<p>在一个超越基本LFS(如安装了Mozilla和KDE)的系统上,当 GCC 联合使用 Binutils 的新版本进行一些软件包的编译的时候会失败。下面这个补丁可以修正这个错误:
</p>
<pre class="userinput"><kbd class="command">patch -Np1 -i ../gcc-3.4.3-linkonce-1.patch</kbd></pre>
<p>使用一个 <span><strong class="command">sed</strong></span> 命令来禁止 GCC 安装它自己的 <tt class="filename">libiberty.a</tt>。我们将使用 Binutils 附带的 <tt class="filename">libiberty.a</tt> 来代替:
</p>
<pre class="userinput"><kbd class="command">sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in</kbd></pre>
<p>GCC 的安装指南推荐用一个新建的目录来编译它,而不是在源码目录中:</p>
<pre class="userinput"><kbd class="command">mkdir ../gcc-build
cd ../gcc-build</kbd></pre>
<p>为编译 GCC 做准备:</p>
<pre class="userinput"><kbd class="command">../gcc-3.4.3/configure --prefix=/usr \
--libexecdir=/usr/lib --enable-shared \
--enable-threads=posix --enable-__cxa_atexit \
--enable-clocale=gnu --enable-languages=c,c++</kbd></pre>
<p>编译软件包:</p>
<pre class="userinput"><kbd class="command">make</kbd></pre>
<div class="important">
<div class="admonhead">
<img alt="[Important]" src="../images/important.png" />
<h3 class="admontitle">
重要
</h3>
</div>
<div class="admonbody">
<p>本节的GCC测试套件很重要。在任何情况下都不要省略这一步。</p>
</div>
</div>
<p>运行测试套件,但遇到错误不停止(你还记得那些老是出错的测试吧):</p>
<pre class="userinput"><kbd class="command">make -k check</kbd></pre>
<p><a href="../chapter05/gcc-pass2.html" title="5.11. GCC-3.4.3 - Pass 2">Section 5.11, “GCC-3.4.3 -
Pass 2, ”</a>里的测试套件说明对这里也同样适用,请参考一下它的内容。</p>
<p>
安装软件包:
</p>
<pre class="userinput"><kbd class="command">make install</kbd></pre>
<p>有的软件包希望 C PreProcessor(预处理器)安装在 <tt class="filename">/lib</tt> 目录下,为了满足它们的要求,我们创建如下符号链接:
</p>
<pre class="userinput"><kbd class="command">ln -s ../usr/bin/cpp /lib</kbd></pre>
<p>许多软件包使用 <span><strong class="command">cc</strong></span> 作为 C 编译器的名字,为了满足它们的要求,创建如下符号链接:
</p>
<pre class="userinput"><kbd class="command">ln -s gcc /usr/bin/cc</kbd></pre>
<div class="note">
<div class="admonhead">
<img alt="[Note]" src="../images/note.png" />
<h3 class="admontitle">
注意
</h3>
</div>
<div class="admonbody">
<p>这里,我们强烈推荐运行一下本章前面进行过的合理性测试。请参考 <a href="readjusting.html" title="6.12. Re-adjusting the Toolchain">Section 6.12 “再次调整工具链”</a> 并重复测试。如果结果错了,可能是因为你没有正确使用 <a href="../chapter05/chapter05.html">Chapter 5</a> 的GCC Specs补丁。
</p>
</div>
</div>
</div>
<div class="content" lang="zh_cn" xml:lang="zh_cn">
<div class="titlepage">
<a id="contents-gcc" name="contents-gcc"></a>
<h2 class="sect2">
6.14.2. GCC 的内容
</h2>
</div>
<div class="segmentedlist">
<div class="seglistitem">
<div class="seg">
<strong><span class="segtitle">安装的程序:</span></strong> <span class="seg">c++, cc(链接到 gcc), cpp, g++, gcc, gccbug, gcov</span>
</div>
<div class="seg">
<strong><span class="segtitle">安装的库:</span></strong> <span class="seg">libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so], libsupc++.a</span>
</div>
</div>
</div>
<div class="variablelist">
<h3>
<a id="id3317978" name="id3317978"></a>简要描述</h3>
<table border="0">
<col align="left" valign="top" />
<tbody>
<tr>
<td>
<a id="cc" name="cc"></a><span class="term"><span><strong class="command">cc</strong></span></span>
</td>
<td>
<p>C 编译器
</p>
</td>
</tr>
<tr>
<td>
<a id="cpp" name="cpp"></a><span class="term"><span><strong class="command">cpp</strong></span></span>
</td>
<td>
<p>C 预处理器。编译器用它来将 #include 和 #define 这类声明在源文件中展开。
</p>
</td>
</tr>
<tr>
<td>
<a id="c" name="c"></a><span class="term"><span><strong class="command">c++</strong></span></span>
</td>
<td>
<p>C++ 编译器</p>
</td>
</tr>
<tr>
<td>
<a id="g" name="g"></a><span class="term"><span><strong class="command">g++</strong></span></span>
</td>
<td>
<p>C++ 编译器</p>
</td>
</tr>
<tr>
<td>
<a id="gcc" name="gcc"></a><span class="term"><span><strong class="command">gcc</strong></span></span>
</td>
<td>
<p>C 编译器</p>
</td>
</tr>
<tr>
<td>
<a id="gccbug" name="gccbug"></a><span class="term"><span><strong class="command">gccbug</strong></span></span>
</td>
<td>
<p>一个shell脚本,帮助创建有价值的bug报告。</p>
</td>
</tr>
<tr>
<td>
<a id="gcov" name="gcov"></a><span class="term"><span><strong class="command">gcov</strong></span></span>
</td>
<td>
<p>覆盖测试工具,用来分析在程序的哪里做优化的效果最好。</p>
</td>
</tr>
<tr>
<td>
<a id="libgcc" name="libgcc"></a><span class="term"><tt class="filename">libgcc</tt></span>
</td>
<td>
<p><span><strong class="command">gcc</strong></span> 的运行时库</p>
</td>
</tr>
<tr>
<td>
<a id="libstdc" name="libstdc"></a><span class="term"><tt class="filename">libstdc++</tt></span>
</td>
<td>
<p>准 C++ 库,包含许多常用的函数。</p>
</td>
</tr>
<tr>
<td>
<a id="libsupc" name="libsupc"></a><span class="term"><tt class="filename">libsupc++</tt></span>
</td>
<td>
<p>为 C++ 语言提供支持的库函数。</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="navfooter">
<ul>
<li class="prev">
<a accesskey="p" href="binutils.html" title="Binutils-2.15.94.0.2.2">后退</a>
<p>
Binutils-2.15.94.0.2.2
</p>
</li>
<li class="next">
<a accesskey="n" href="coreutils.html" title="Coreutils-5.2.1">前进</a>
<p>
Coreutils-5.2.1
</p>
</li>
<li class="up">
<a accesskey="u" href="chapter06.html" title="Chapter 6. 安装系统基础软件">上一级</a>.
</li>
<li class="home">
<a accesskey="h" href="../index.html" title="Linux From Scratch - Version 6.1">回首页</a>.
</li>
</ul>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -