📄 binutils.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.13. Binutils-2.15.94.0.2.2
</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="readjusting.html" title="Re-adjusting the Toolchain">后退</a>
<p>
Re-adjusting the Toolchain
</p>
</li>
<li class="next">
<a accesskey="n" href="gcc.html" title="GCC-3.4.3">前进</a>
<p>
GCC-3.4.3
</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.13. Binutils-2.15.94.0.2.2
</h1>
</div>
<div class="package" lang="zh_cn" xml:lang="zh_cn">
<p>Binutils 是一组开发工具,包括连接器、汇编器和其他用于目标文件和档案的工具。</p>
<div class="segmentedlist">
<div class="seglistitem">
<div class="seg">
<strong><span class="segtitle">预计编译时间:</span></strong> <span class="seg">1.3 SBU</span>
</div>
<div class="seg">
<strong><span class="segtitle">所需磁盘空间:</span></strong> <span class="seg">158 MB</span>
</div>
</div>
</div>
<div class="segmentedlist">
<div class="seglistitem">
<div class="seg">
<strong><span class="segtitle">安装依赖于:</span></strong> <span class="seg">Bash, Bison, Coreutils, Diffutils, Flex, GCC, Gettext, Glibc, Grep, M4, 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.13.1. 安装 Binutils
</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>,我们劝你在编译 Binutils 时 unset 或修改它们。</p>
<p>现在我们测试一下在 chroot 环境中,你的伪终端(PTY)是否正常工作。运行下面的命令:
</p>
<pre class="userinput"><kbd class="command">expect -c "spawn ls"</kbd></pre>
<p>如果看到这样的输出:
</p>
<pre class="screen"><tt class="computeroutput">The system has no more ptys. Ask your system administrator to create more.</tt></pre>
<p>说明你的 chroot 环境没有设置好PTY,这时运行 Binutils 和 GCC 的测试套件就没有意义了,你必须先解决PTY设置。
</p>
<p>Binutils 的文档推荐用一个新建的目录来编译它,而不是在源码目录中:
</p>
<pre class="userinput"><kbd class="command">mkdir ../binutils-build
cd ../binutils-build</kbd></pre>
<p>为编译 Binutils 做准备:</p>
<pre class="userinput"><kbd class="command">../binutils-2.15.94.0.2.2/configure --prefix=/usr \
--enable-shared</kbd></pre>
<p>编译软件包:</p>
<pre class="userinput"><kbd class="command">make tooldir=/usr</kbd></pre>
<p>通常情况下,tooldir(可执行文件的安装目录) 是 <tt class="filename">$(exec_prefix)/$(target_alias)</tt>。例如在i686的机器上,将是 <tt class="filename">/usr/i686-pc-linux-gnu</tt> 。因为我们只为自己的系统进行编译,就并不需要在 <tt class="filename">/usr</tt> 目录后面再存在特殊的后缀。它只是在交叉编译时(比如在Intel机器上编译将要在PowerPC上执行的程序)才用到。
</p>
<div class="important">
<div class="admonhead">
<img alt="[Important]" src="../images/important.png" />
<h3 class="admontitle">
重要
</h3>
</div>
<div class="admonbody">
<p>本节的 Binutils 测试套件很重要。在任何情况下都不要省略这一步。
</p>
</div>
</div>
<p>对编译结果进行测试:
</p>
<pre class="userinput"><kbd class="command">make check</kbd></pre>
<p>
安装软件包:
</p>
<pre class="userinput"><kbd class="command">make tooldir=/usr install</kbd></pre>
<p>安装某些软件包需要的 <tt class="filename">libiberty</tt> 头文件:
</p>
<pre class="userinput"><kbd class="command">cp ../binutils-2.15.94.0.2.2/include/libiberty.h /usr/include</kbd></pre>
</div>
<div class="content" lang="zh_cn" xml:lang="zh_cn">
<div class="titlepage">
<a id="contents-binutils" name="contents-binutils"></a>
<h2 class="sect2">
6.13.2. Binutils 的内容
</h2>
</div>
<div class="segmentedlist">
<div class="seglistitem">
<div class="seg">
<strong><span class="segtitle">安装的程序:</span></strong> <span class="seg">addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings, strip</span>
</div>
<div class="seg">
<strong><span class="segtitle">安装的库:</span></strong> <span class="seg">libiberty.a, libbfd.[a,so], libopcodes.[a,so]</span>
</div>
</div>
</div>
<div class="variablelist">
<h3>
<a id="id3317375" name="id3317375"></a>简要描述</h3>
<table border="0">
<col align="left" valign="top" />
<tbody>
<tr>
<td>
<a id="addr2line" name="addr2line"></a><span class="term"><span><strong class="command">addr2line</strong></span></span>
</td>
<td>
<p>把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。
</p>
</td>
</tr>
<tr>
<td>
<a id="ar" name="ar"></a><span class="term"><span><strong class="command">ar</strong></span></span>
</td>
<td>
<p>建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。
</p>
</td>
</tr>
<tr>
<td>
<a id="as" name="as"></a><span class="term"><span><strong class="command">as</strong></span></span>
</td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -