%general-entities; ]> binutils &binutils-version;
&binutils-url;
Binutils-&binutils-version; - 第一遍 Binutils tools, pass 1 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../chapter06/binutils.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/> <segmentedlist> <segtitle>&buildtime;</segtitle> <segtitle>&diskspace;</segtitle> <seglistitem> <seg>&binutils-ch5p1-sbu;</seg> <seg>&binutils-ch5p1-du;</seg> </seglistitem> </segmentedlist> </sect2> <sect2 role="installation"> <title>安装交叉工具链中的 Binutils 返回并重新阅读上一节。仔细理解那些标为 重要 的说明,以防止之后出现问题。 首先构建 Binutils 相当重要, 因为 Glibc 和 GCC 都会对可用的链接器和汇编器进行测试, 以决定可以启用它们自带的哪些特性。 Binutils 文档推荐在一个专用的目录中构建 Binutils: mkdir -v build cd build 为了衡量本书其余部分使用的 SBU 值, 需要测量本软件包从配置开始直到第一次安装花费的时间。 为了容易地完成测量,可以将命令包装在 time 命令中,就像这样: time {./configure ... && ... && make install; } 第 5 章中估计的 SBU 值和所需磁盘空间都不包含测试套件的数据。 现在,准备编译 Binutils : ../configure --prefix=/tools \ --with-sysroot=$LFS \ --with-lib-path=/tools/lib \ --target=$LFS_TGT \ --disable-nls \ --disable-werror 配置选项的含义: --prefix=/tools 这告诉配置脚本准备将 Binutils 程序安装在 /tools 目录中。 --with-sysroot=$LFS 该选项告诉构建系统,交叉编译时在 $LFS 中寻找目标系统的库。 --with-lib-path=/tools/lib 该选项指定链接器应该使用的库文件搜索路径。 --target=$LFS_TGT 由于 LFS_TGT 变量中的机器描述和 config.guess 脚本的输出略有不同, 这个开关使得 configure 脚本调整 Binutils 的构建系统,以构建交叉链接器。 --disable-nls 该选项禁用临时工具不需要的国际化功能。 --disable-werror 该选项防止宿主系统编译器警告导致构建失败。 然后编译该软件包: make 现在编译已经完成,一般来说我们应该执行测试套件, 但在当前的早期构建阶段,测试套件框架 (Tcl、Expect 和 DejaGNU) 尚不可用。另外,由于第一遍构建的程序很快会被第二遍构建的程序替代, 运行测试的收益极小。 如果在 x86_64 上编译,创建一个符号链接以保证工具链的完整性: case $(uname -m) in x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;; esac 安装该软件包: make install <para>这个软件包的细节在 <xref linkend="contents-binutils"/> 中可以找到。</para> </sect2> </sect1>