5.9. Binutils-2.20 - 第二遍

Binutils 软件包包含一个链接器,一个汇编器和其他处理目标文件的工具。

预计编译时间: 1.3 SBU
所需磁盘空间: 259 MB

5.9.1. 安装 Binutils

再次建立一个专用目录:

mkdir -v ../binutils-build
cd ../binutils-build

为编译 Binutils 做准备:

CC="$LFS_TGT-gcc -B/tools/lib/" \
   AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \
   ../binutils-2.20/configure --prefix=/tools \
   --disable-nls --with-lib-path=/tools/lib

新配置参数的含义:

CC="$LFS_TGT-gcc -B/tools/lib/" AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib

因为这是真实的编译 Binutils, 所以, 设置这些变量是为了确保编译系统使用的是交叉编译器和相关工具, 而不是宿主系统的工具。

--with-lib-path=/tools/lib

这个选项告诉 configure 脚本在 Binutils 编译过程中将传递给连接器的库搜索路径设为 /tools/lib,以防止连接器搜索宿主系统的库目录。

编译这个软件包:

make

安装这个软件包:

make install

现在,为下一章的"再调整"阶段准备连接器:

make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin

make 参数的含义:

-C ld clean

该参数告诉 make 程序,删除 ld 子目录下所有已编译的文件。

-C ld LIB_PATH=/usr/lib:/lib

该参数重新编译 ld 子目录下的所有文件。具体说就是,命令行上 LIB_PATH 的Makefile 变量可以覆盖临时工具的默认值, 并将它指定到正确的最终目录。 这个变量的值指定了链接器默认的库搜索路径。这是为下一章使用做准备。

这个软件包的详细内容位于 Section 6.12.2, “Contents of Binutils.”