现在新的C库已经安装好了,我们需要再次调整工具链,让本章随后编译的那些工具都连接到这个库上。基本上,就是把前一章"锁定Glibc"那里做的调整给取消掉。
第一件事是调整连接器。我们在第二遍编译binutils的时候,保留了源码和编译目录。在 binutils-build 目录下用下列命令安装连接器:
make -C ld INSTALL=/tools/bin/install install |
注: 如果你没看到前面关于保留binutils源码目录和编译目录的警告,或者不小心删除了第二遍Binutils的源码目录或编译目录,别紧张,关系不大,别运行上面的命令就行了,这样会使下一个软件包Binutils连接到 /tools 目录下的Glibc库上,而不是 /usr下那个。这不太完美,但经过我们的测试,生成的Binutils应该是一模一样的。
从现在起,所有新编译的程序都只连接到/usr/lib和/lib下的库文件上了。需要INSTALL=/tools/bin/install参数是因为在第二遍 Binutils 时创建的 Makefile还包含了对 /usr/bin/install的引用,而我们这时显然还没有安装它。有的发行版用 ginstall作为install的名称,这里就会出问题了,上面的命令也考虑了这种情况。
你现在可以删除 Binutils源码和编译目录了。
下面要做的是修正我们的 GCC specs 文件,使它指向新的动态连接器。和前面一样,我们用一个简单的 sed 命令就能做到:
SPECFILE=/tools/lib/gcc-lib/*/*/specs && sed -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g' \ $SPECFILE > newspecfile && mv -f newspecfile $SPECFILE unset SPECFILE |
我们再次推荐你拷贝和粘贴上面的命令,而不是手动输入命令。和上次一样,在修改了以后,检查一下specs文件,可以确保真的改好了。
重要: 如果你的系统平台上,动态连接器的名字不是ld-linux.so.2,你必须 把上面命令里ld-linux.so.2换成你的系统平台上动态连接器的名字。参见 工具链技术说明 在 第 5 章。