+ -
当前位置:首页 → 问答吧 → 求问 Sysroot LFS 1.1里的gcc 为何要编译第三次?

求问 Sysroot LFS 1.1里的gcc 为何要编译第三次?

时间:2009-10-14

来源:互联网

看GCC一共编了3次

第一次是为了编译目标系统的GLIBC 只支持C语言

第二次既然已经有了目标系统的GLIBC和第一次的交叉编译工具
为什么不直接编译出适合目标系统的带C++的全功能GCC?
是因为第二次编译GCC 要使用原系统的sed bash等工具 所以认为这个GCC还是不纯净吗?

等GCC所需要的目标系统中的sed bash等工具都编译好 chroot到目标系统中
再用所有都是目标系统的工具 编译和bootstrap出第三次的GCC 就完全与原系统脱离关系了吧

我的理解是否正确?

作者: heuyck   发布时间: 2009-10-14

您参考的那个手册。
LFS 对不上号,
CLFS-1.x.x CLFS-svn 对不上号,
CLFS-sysroot 也对不上号。

如果是指 CLFS-sysroot,抱歉,交叉编译无法 bootstrap gcc binutils。

作者: 聚焦深空   发布时间: 2009-10-15

第二次安装的gcc是在编译工具的目录下,而第三次编译的是目标系统上的gcc

作者: youbest   发布时间: 2009-10-15

to 聚焦深空:
没说清楚 是youbest用sysroot方法做的LFS过程

to youbest:
又去仔细看了 是看错了
第二遍的GCC实际是类似交叉编译的GCC 还是运行在原系统上的 不过跟第一遍的区别就是有GLIBC库可用了

那么第二遍的GCC是为了编译<最基本的目标系统>里的sed等工具吗?
是因为第一遍的GCC没有库 不能编译它们
第三遍的GCC又需要sed等工具 也不能编译它们
这样理解对吗

谢谢解答

作者: heuyck   发布时间: 2009-10-15

引用:
作者: heuyck
to 聚焦深空:
没说清楚 是youbest用sysroot方法做的LFS过程

to youbest:
又去仔细看了 是看错了
第二遍的GCC实际是类似交叉编译的GCC 还是运行在原系统上的 不过跟第一遍的区别就是有GLIBC库可用了

那么第二遍的GCC是为了编译<最基本的目标系统>里的sed等工具吗?
是因为第一遍的GCC没有库 不能编译它们
第三遍的GCC又需要sed等工具 也不能编译它们
这样理解对吗

谢谢解答
1)第一次编译是只有生成C,而第二次是不仅C,这需要GLIBC的支持。
2)我的理解,第二次的编译,已经是脱离原系统了(主要表现是或说取决于glibc,gcc ,binutlis)。
3)第一次依赖于原库,编译成静态的次C,第二次编译为动态的,依赖于新的glibc.

作者: zswlb9999   发布时间: 2009-10-15