⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcc.html

📁 Linux From Scratch的中文指导,学习LINUX很有用
💻 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.&nbsp;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&nbsp;6.&nbsp;安装系统基础软件
        </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&nbsp;6.&nbsp;安装系统基础软件">上一级</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.&nbsp;GCC-3.4.3 - Pass 2">Section 5.11, &ldquo;GCC-3.4.3 -
          Pass 2, &rdquo;</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.&nbsp;Re-adjusting the Toolchain">Section 6.12 &ldquo;再次调整工具链&rdquo;</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&nbsp;6.&nbsp;安装系统基础软件">上一级</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 + -