该软件包的详细信息在6.13.2, “Binutils 软件包内容”
Binutils 软件包包括一个链接器,汇编器和其它处理目标文件的工具。
再次新建一个单独的编译文件夹:
mkdir -v ../binutils-build cd ../binutils-build
准备编译 Binutils:
CC=$LFS_TGT-gcc \ AR=$LFS_TGT-ar \ RANLIB=$LFS_TGT-ranlib \ ../binutils-2.25/configure \ --prefix=/tools \ --disable-nls \ --disable-werror \ --with-lib-path=/tools/lib \ --with-sysroot
新配置选项的含义:
CC=$LFS_TGT-gcc
AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib
因为这是真正的原生编译 Binutils,设置这些变量能确保编译系统使用交叉编译器和相关的工具,而不是宿主系统中已有的。
--with-lib-path=/tools/lib
这告诉配置脚本在编译 Binutils 的时候指定库搜索目录,此处将 /tools/lib
传递到链接器。这可以防止链接器搜索宿主系统的库目录。
--with-sysroot
sysroot 功能使链接器可以找到包括在其命令行中的其它共享对象明确需要的共享对象。 否则的话,在某些主机上一些软件包可能会编译不成功。
编译软件包:
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
子目录中的所有文件。在命令行中指定 Makefile 的 LIB_PATH
变量可以使我们能够重写临时工具的默认值并指向正确的最终路径。该变量的值指定链接器的默认库搜索路径。
下一章中会用到这个准备。
该软件包的详细信息在6.13.2, “Binutils 软件包内容”