mirror of
https://github.com/LCTT/LFS-BOOK-7.7-systemd.git
synced 2026-01-14 00:49:09 +00:00
682 lines
24 KiB
HTML
682 lines
24 KiB
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=utf-8" />
|
||
<title>
|
||
6.17. GCC-4.9.2
|
||
</title>
|
||
<link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
|
||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
|
||
<link rel="stylesheet" href="../stylesheets/lfs-print.css" type="text/css"
|
||
media="print" />
|
||
</head>
|
||
<body class="lfs" id="lfs-7.7-systemd">
|
||
<div class="navheader">
|
||
<h4>
|
||
Linux From Scratch - Version 7.7-systemd
|
||
</h4>
|
||
<h3>
|
||
第六章 安装基本的系统软件
|
||
</h3>
|
||
<ul>
|
||
<li class="prev">
|
||
<a accesskey="p" href="mpc.html" title="MPC-1.0.2">上一页</a>
|
||
<p>
|
||
MPC-1.0.2
|
||
</p>
|
||
</li>
|
||
<li class="next">
|
||
<a accesskey="n" href="bzip2.html" title="Bzip2-1.0.6">下一页</a>
|
||
<p>
|
||
Bzip2-1.0.6
|
||
</p>
|
||
</li>
|
||
<li class="up">
|
||
<a accesskey="u" href="chapter06.html" title=
|
||
"第六章 安装基本的系统软件">返回</a>
|
||
</li>
|
||
<li class="home">
|
||
<a accesskey="h" href="../index.html" title=
|
||
"Linux From Scratch - Version 7.7-systemd">主页</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<h1 class="sect1">
|
||
<a id="ch-system-gcc" name="ch-system-gcc"></a>6.17. GCC-4.9.2
|
||
</h1>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
GCC 软件包包括 GNU 编译器集,其中有 C 和 C++ 的编译器。
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">大概编译时间:</strong>
|
||
<span class="segbody">63 SBU (包括测试)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">需要磁盘空间:</strong>
|
||
<span class="segbody">2.9 GB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h2 class="sect2">
|
||
6.17.1. 安装 GCC
|
||
</h2>
|
||
<p>
|
||
GCC 指南建议在源代码目录之外一个专用的编译目录中编译 GCC:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v ../gcc-build
|
||
cd ../gcc-build</kbd>
|
||
</pre>
|
||
<p>
|
||
准备编译 GCC:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">SED=sed \
|
||
../gcc-4.9.2/configure \
|
||
--prefix=/usr \
|
||
--enable-languages=c,c++ \
|
||
--disable-multilib \
|
||
--disable-bootstrap \
|
||
--with-system-zlib</kbd>
|
||
</pre>
|
||
<p>
|
||
注意对于其它语言,现在还有一些前提条件没有准备好。可以查看 <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/systemd/general/gcc.html">
|
||
BLFS Book</a> 了解如何编译 GCC 支持的所有语言的指令。
|
||
</p>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>新配置选项的含义:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><code class="envar">SED=sed</code></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
设置环境变量防止到 /tools/bin/sed 的硬编码路径。
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-system-zlib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
这个选项告诉 GCC 链接系统安装的 Zlib 库,而不是它内部自带的库。
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
编译软件包:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<div class="admon important">
|
||
<img alt="[Important]" src="../images/important.png" />
|
||
<h3>
|
||
重要
|
||
</h3>
|
||
<p>
|
||
本章节中 GCC 的测试套件至关重要,任何情况下都不能跳过。
|
||
</p>
|
||
</div>
|
||
<p>
|
||
GCC 测试套件中一个测试集的会用尽栈空间,因此运行测试之前要增加栈大小:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ulimit -s 32768</kbd>
|
||
</pre>
|
||
<p>
|
||
查看结果,但不要因为出现错误就停下来:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make -k check</kbd>
|
||
</pre>
|
||
<p>
|
||
要查看测试套件结果的概要,运行:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">../gcc-4.9.2/contrib/test_summary</kbd>
|
||
</pre>
|
||
<p>
|
||
如果只是查看概要,可以用 <strong class=
|
||
"userinput"><code>grep -A7 Summ</code></strong> 通过管道输出。
|
||
</p>
|
||
<p>
|
||
结果可以和 <a class="ulink"
|
||
href="http://www.linuxfromscratch.org/lfs/build-logs/7.7-systemd/">http://www.linuxfromscratch.org/lfs/build-logs/7.7-systemd/</a>
|
||
以及 <a class="ulink" href=
|
||
"http://gcc.gnu.org/ml/gcc-testresults/">http://gcc.gnu.org/ml/gcc-testresults/</a> 上的相比较。
|
||
</p>
|
||
<p>
|
||
一些意料之外的错误总是难以避免。GCC 开发者通常意识到了这些问题,但还没有解决。除非测试结果和上面 URL 中的相差很大,不然就可以安全继续。
|
||
</p>
|
||
<p>
|
||
安装软件包:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
一些软件包希望 GCC 安装在 <code class="filename">/lib</code> 目录。为了支持那些软件包,可以建立一个符号链接:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv ../usr/bin/cpp /lib</kbd>
|
||
</pre>
|
||
<p>
|
||
很多软件包用命令 <span class=
|
||
"command"><strong>cc</strong></span> 调用 C 编译器。为了满足这些软件包,创建一个符号链接:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv gcc /usr/bin/cc</kbd>
|
||
</pre>
|
||
<p>
|
||
增加一个兼容符号链接启用编译程序时进行链接时间优化(Link Time Optimization):
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">install -v -dm755 /usr/lib/bfd-plugins
|
||
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/4.9.2/liblto_plugin.so /usr/lib/bfd-plugins/</kbd>
|
||
</pre>
|
||
<p>
|
||
现在我们最终的工具栏已经准备就绪了,再一次确认编译和链接都能像预期那样正常工作很重要。我们通过做和前面章节做过的相同的完整性检查做到这点:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo 'main(){}' > dummy.c
|
||
cc dummy.c -v -Wl,--verbose &> dummy.log
|
||
readelf -l a.out | grep ': /lib'</kbd>
|
||
</pre>
|
||
<p>
|
||
这应该没有错误,最后一个命令的输出应该是(允许平台相关的动态链接器名字有差异):
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">[Requesting program interpreter: /lib/ld-linux.so.2]</code>
|
||
</pre>
|
||
<p>
|
||
现在确认我们设置了正确的启动文件:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
最后一个命令的输出应该是:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">/usr/lib/gcc/i686-pc-linux-gnu/4.9.2/../../../crt1.o succeeded
|
||
/usr/lib/gcc/i686-pc-linux-gnu/4.9.2/../../../crti.o succeeded
|
||
/usr/lib/gcc/i686-pc-linux-gnu/4.9.2/../../../crtn.o succeeded</code>
|
||
</pre>
|
||
<p>
|
||
取决于你机器的架构,上面的结果可能有稍微不同,差异通常是 <code class="filename">/usr/lib/gcc</code> 后目录的名称。如果你的是 64 位系统,你也许能看到后面有个 <code class=
|
||
"filename">lib64</code> 的目录名字。这里重要的一点是 <span class=
|
||
"command"><strong>gcc</strong></span> 能在 <code class=
|
||
"filename">/usr/lib</code> 目录下找到所有的三个 <code class="filename">crt*.o</code> 文件。
|
||
</p>
|
||
<p>
|
||
验证编译器能搜索正确的头文件:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep -B4 '^ /usr/include' dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
这个命令应该返回下面的的输出:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">#include <...> search starts here:
|
||
/usr/lib/gcc/i686-pc-linux-gnu/4.9.2/include
|
||
/usr/local/include
|
||
/usr/lib/gcc/i686-pc-linux-gnu/4.9.2/include-fixed
|
||
/usr/include</code>
|
||
</pre>
|
||
<p>
|
||
同意,注意你的目标三元组后面的目录名称可能和上面的不同,取决于你的架构。
|
||
</p>
|
||
<div class="admon note">
|
||
<img alt="[Note]" src="../images/note.png" />
|
||
<h3>
|
||
注意
|
||
</h3>
|
||
<p>
|
||
在版本 4.3.0 中,GCC 无条件安装 <code class="filename">limits.h</code> 文件到私有 <code class="filename">include-fixed</code> 目录,要求这个目录已经存在。
|
||
</p>
|
||
</div>
|
||
<p>
|
||
下一步,验证新的链接器在使用正确的搜索路径:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</kbd>
|
||
</pre>
|
||
<p>
|
||
可以忽略指向含有 '-linux-gnu' 的路径的引用,但最后一个命令的输出应该是:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
|
||
SEARCH_DIR("/usr/local/lib32")
|
||
SEARCH_DIR("/lib32")
|
||
SEARCH_DIR("/usr/lib32")
|
||
SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
|
||
SEARCH_DIR("/usr/local/lib")
|
||
SEARCH_DIR("/lib")
|
||
SEARCH_DIR("/usr/lib");</code>
|
||
</pre>
|
||
<p>
|
||
64 位的系统可能有一些不同的目录。例如,下面是一台 x86_64 机器的输出:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">SEARCH_DIR("/usr/x86_64-unknown-linux-gnu/lib64")
|
||
SEARCH_DIR("/usr/local/lib64")
|
||
SEARCH_DIR("/lib64")
|
||
SEARCH_DIR("/usr/lib64")
|
||
SEARCH_DIR("/usr/x86_64-unknown-linux-gnu/lib")
|
||
SEARCH_DIR("/usr/local/lib")
|
||
SEARCH_DIR("/lib")
|
||
SEARCH_DIR("/usr/lib");</code>
|
||
</pre>
|
||
<p>
|
||
然后确认我们使用了正确的 libc:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep "/lib.*/libc.so.6 " dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
最后一个命令的输出(允许 64 位主机中是 lib64 目录)应该是:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">attempt to open /lib/libc.so.6 succeeded</code>
|
||
</pre>
|
||
<p>
|
||
最后,确认 GCC 在使用正确的动态链接器:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep found dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
最后一个命令的输出应该是(允许平台相关的动态链接器有差异以及 64 位系统中是 lib64 目录):
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">found ld-linux.so.2 at /lib/ld-linux.so.2</code>
|
||
</pre>
|
||
<p>
|
||
如果输出和上面的不一样或者根本就没有任何输出,表明发生了很严重的错误。检查并回溯步骤找出问题所在并纠正它。最可能的原因是相同文件调整时出现了问题。在进入下一步之前必须解决所有的问题。
|
||
</p>
|
||
<p>
|
||
当一切都正常工作后,清理测试文件:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -v dummy.c a.out dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
最后,移动位置错误文件:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -pv /usr/share/gdb/auto-load/usr/lib
|
||
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h2 class="sect2">
|
||
<a id="contents-gcc" name="contents-gcc"></a>6.17.2. GCC 的内容
|
||
</h2>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">安装的程序:</strong>
|
||
<span class="segbody">c++, cc (link to gcc), cpp, g++, gcc,
|
||
gcc-ar, gcc-nm, gcc-ranlib, and gcov</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">安装的库:</strong>
|
||
<span class="segbody">libasan.{a,so}, libatomic.{a,so},
|
||
libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, libgomp.{a,so},
|
||
libiberty.a, libitm.{a,so}, liblto_plugin.so,
|
||
libquadmath.{a,so}, libssp.{a,so}, libssp_nonshared.a,
|
||
libstdc++.{a,so}, libsupc++.a, and libtsan.{a,so}</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">安装目录:</strong>
|
||
<span class="segbody">/usr/include/c++, /usr/lib/gcc,
|
||
/usr/libexec/gcc, and /usr/share/gcc-4.9.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h3>
|
||
简要介绍
|
||
</h3>
|
||
<table border="0" class="variablelist">
|
||
<colgroup>
|
||
<col align="left" valign="top" />
|
||
<col />
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="c" name="c"></a><span class="term"><span class=
|
||
"command"><strong>c++</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
C++ 编译器
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="cc" name="cc"></a><span class="term"><span class=
|
||
"command"><strong>cc</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
C 编译器
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="cpp" name="cpp"></a><span class=
|
||
"term"><span class="command"><strong>cpp</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
C 预处理器;编译器用来扩展源文件中 #include、#define 以及相似的语句
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="g" name="g"></a><span class="term"><span class=
|
||
"command"><strong>g++</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
C++ 编译器
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="gcc" name="gcc"></a><span class=
|
||
"term"><span class="command"><strong>gcc</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
C 编译器
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="gcc-ar" name="gcc-ar"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>gcc-ar</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
增加语句到命令行的 <span class=
|
||
"command"><strong>ar</strong></span> 的封装。这个程序只用于添加
|
||
"链接时间优化" 在默认编译选择中不起作用
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="gcc-nm" name="gcc-nm"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>gcc-nm</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
增加语句到命令行的 <span class=
|
||
"command"><strong>nm</strong></span> 的封装。这个程序只用于添加
|
||
"链接时间优化" 在默认编译选择中不起作用
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="gcc-ranlib" name="gcc-ranlib"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>gcc-ranlib</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
增加语句到命令行的 <span class=
|
||
"command"><strong>ranlib</strong></span> 的封装。这个程序只用于添加
|
||
"链接时间优化" 在默认编译选择中不起作用
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="gcov" name="gcov"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>gcov</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
一个覆盖测试工具;用于分析程序决定在哪里进行优化有最大的效果
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libasan" name="libasan"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>libasan</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Address Sanitizer(译者注:地址消毒剂,可以查看:<a href="http://en.wikipedia.org/wiki/AddressSanitizer">Wiki</a>) 运行时库。
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libgcc" name="libgcc"></a><span class=
|
||
"term"><code class="filename">libgcc</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
包含用于 <span class=
|
||
"command"><strong>gcc</strong></span> 的运行时支持
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libgcov" name="libgcov"></a><span class=
|
||
"term"><code class="filename">libgcov</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
指示 GCC 启用分析是该库会被链接到一个程序中
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libgomp" name="libgomp"></a><span class=
|
||
"term"><code class="filename">libgomp</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
用于 C/C++、Fortran 语言多平台共享内存并行编程的 OpenMP API 的 GNU 实现
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libiberty" name="libiberty"></a><span class=
|
||
"term"><code class="filename">libiberty</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
包含多种 GNU 程序所使用的例程,包括
|
||
<span class="command"><strong>getopt</strong></span>,
|
||
<span class="command"><strong>obstack</strong></span>,
|
||
<span class="command"><strong>strerror</strong></span>,
|
||
<span class="command"><strong>strtol</strong></span>, and
|
||
<span class="command"><strong>strtoul</strong></span>
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="liblto_plugin" name=
|
||
"liblto_plugin"></a><span class="term"><code class=
|
||
"filename">liblto_plugin</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
GCC 的链接时间优化(LTO)插件,允许在编译单元之间进行优化
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libquadmath" name="libquadmath"></a><span class=
|
||
"term"><code class="filename">libquadmath</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
GCC 四精度数学库 API
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libssp" name="libssp"></a><span class=
|
||
"term"><code class="filename">libssp</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
包含支持 GCC 堆栈溢出保护功能的例程
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libstdc" name="libstdc"></a><span class=
|
||
"term"><code class="filename">libstdc++</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
标准 C++ 库
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libsupc" name="libsupc"></a><span class=
|
||
"term"><code class="filename">libsupc++</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
为 C++ 编程语言提供支持例程
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libtsan" name="libtsan"></a><span class=
|
||
"term"><code class="filename">libtsan</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Thread Sanitizer 运行时库
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="navfooter">
|
||
<div class="book">
|
||
<div class="titlepage">
|
||
<div class="author">
|
||
<span class="firstname">翻译团队:<a href="http://lctt.github.io/" target="_blank">LCTT</a></span>
|
||
<span class="surname">译者/校对:<a href="http://github.com/ictlyh" target="_blank">ictlyh</a>,</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<ul>
|
||
<li class="prev">
|
||
<a accesskey="p" href="mpc.html" title="MPC-1.0.2">上一页</a>
|
||
<p>
|
||
MPC-1.0.2
|
||
</p>
|
||
</li>
|
||
<li class="next">
|
||
<a accesskey="n" href="bzip2.html" title="Bzip2-1.0.6">下一页</a>
|
||
<p>
|
||
Bzip2-1.0.6
|
||
</p>
|
||
</li>
|
||
<li class="up">
|
||
<a accesskey="u" href="chapter06.html" title=
|
||
"第六章 安装基本的系统软件">返回</a>
|
||
</li>
|
||
<li class="home">
|
||
<a accesskey="h" href="../index.html" title=
|
||
"Linux From Scratch - Version 7.7-systemd">主页</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</body>
|
||
</html>
|