|
|
发表于 2007-4-11 21:47:28
|
显示全部楼层
楼上的兄弟,LFS的基本原理是:从host(发行版linux或liveCD)环境中,先创建一个临时环境(也就是在tools目录下建立个各种工具),此时还会部分利用host的工具,然后利用这个临时环境,此时脱离了host的所有工具,来建立目标机的所有工具。
所以你的理解对了一半,第一遍的binutils和gcc只用来编译glibc,在编译过程中还需要利用host的库文件来执行程序,而glibc不需要C++,所以不用编译。第二遍的binutils、gcc、glibc作为一个完整的工具链,用来编译临时系统,所生成的程序都会从tools/lib目录下查找动态链接库来执行,因此生成的程序就与host系统无关了,也是因为这个原因不能使用第一遍的bintuils和gcc。而最终生成的系统需要从缺省的/lib或/usr/lib下查找库文件,所以后面还需要再编译一次binutils和gcc。
关于第二个问题,make -C ld clean是删除刚生成的ld的内容,--with-lib-path和LIB_PATH=/tools/lib的作用我想应该是等价的。编译的时候由于有打开文件之类的操作,所以肯定会用到库文件。 |
|