过程描述:
主系统中有Linux内核,源工具链、辅助命令及库。编译工具和辅助命令都依赖Glibc。考虑到主系统的Binutils比实际需要的版本低,低版本的Binutils可能缺少需要的某些功能,所以首先生成预编译工具。利用预编译工具编译生成临时系统,把临时系统作为过渡,就可以使用chroot命令切换到制定目录,再利用临时系统提供的编译环境,制作最终的目标系统。
依赖关系:
VIM依赖Ncurses和Glibc,Ncurses依赖Glibc,最后Glibc调用内核提供的函数功能。编译相关的命令会依赖Glibc,其他共享库(如Ncurses)也会依赖Glibc。依赖关系就决定了软件包的编译安装顺序:
Glibc->Ncurses->VIM
工具链调整:
调整工具链实质就是用新的Glibc替换掉旧的Glibc。关键就是修改ld命令的链接,使工具链链接到新的glibc函数库。制作linux系统,要保证系统的纯净性,关键点就是调整工具链修改ld的链接。实现方式类似C语言里中数组的复制移动过程。