|
I>.解决为什么可以编译出一个与host机器 没有依赖的 临时环境.我觉得4个概念要弄清楚
1.lfs6.3第6章编译glibc中说"The Glibc build system is self-contained",也就是说glibc只需要 一些工具(binutil,gcc....),而它本身不需要运行,也不需要什么依赖.
2.第5章gcc-pass2中:"atching now rather than adjusting the specs file after installation ensures that the new dynamic linker is used during the actual build of GCC"
这句话就是说,[gcc本身是自编译的]打了patch之后,gcc编译的过程中将自己连接到 我们新的glibc.
到此为止,glibc,gcc已经是相互依赖,而且都是与host机器脱离.gcc-pass2以后编译的包也就依赖 新的glibc
3.为什么有binutil-pass1,gcc-pass1,可能是 新的系统需要 新版本的binutil和gcc,而且有利于和host机器脱离关系,
更有利于编译后面的包,因为我们可以在编译binutil和gcc的时候就能指定选项(头文件,库路径....),不用因为使用host机器的binutil个gcc,
而每次都需要指定特定的编译选项。
4.为什么编译第6章.
我觉得是因为路径的缘故.因为第5章,我们不嫩指定--prefix=/usr,而第6章 我们需要的 命令,库 又不能在/tools下.所以从新编译,实现的像标准linux那样
我的疑问::::::
如1所说glibc是自给自足的.可是在第6章,没有调整gcc工具链的时候,先编译的glibc.
这样的话glibc的库肯定可以运行,可是和glibc一起安装的命令(catchsegv, gencat, getconf, getent, iconv, iconvconfig, ldconfig, ldd....).
这些命令应该指向/tools/lib.可是实际上不是.这些命令都指向/lib.我不知道为什么???????
如果glibc自给自足的话,那也太智能了!!!!!!
大家给解答 |
|