LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: good02xaut

另一中LFS的安装

[复制链接]
发表于 2006-2-19 20:41:29 | 显示全部楼层
不分开两个帖子了。一个讨论。

Post by good02xaut
按照约定是你说的

一般是不把host指定在name中的,world里有提的:)

不过我表达的意思,版主应该清楚了吧


我的约定是 build.host-target。你的确没按照这个来啊。host不指明,是因为默认为 host=build。但是我们现在是讨论 CC,最好也说出来,毕竟有3个系统在这里。


Post by good02xaut
我现在彻底清楚了。
../gcc-4.0.2/configure \
     --build=i686-pc-linux-gnu \
     --host=x86_64-pc-linux-gnu \
     --target=i386-pc-linux-gnu
配置以后,其实编译时,make 会自动去找x86_64-pc-linux-gnu编译器的。我说的都是显示指定,而现在是通过配置,有make去完成了。
还是回到从前说的:
../gcc-4.0.2/configure \
     --build=i686 \
     --host=ppc \
     --target=arm
这样执行一下你看看,系统肯定会提示找不到ppc-linux-gcc这个东东。
这不正视校验我画的流程了吗,现有交叉编译器,然后直接编译gcc就可以了


说的不错,是ppc-gcc 找不到。

我正想说的就是,我正在尝试不进行第二步直接进行第三步。答案尽快贴出!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-19 20:55:16 | 显示全部楼层
好的,严格遵守版主指示。build.host-target命名,在后面加个-gcc不介意吧:)

如果主机只有i386.i386-i386-gcc,不可能一步跳到i386.ppc-arm-gcc的。
必须经过第二步,产生i386.i386-ppc-gcc,才能够编译出i386.ppc-arm-gcc。
个人认为:
./configure --target=arm --host=ppc --build=i386这3个参数里面,--build是没有用处的。整个过程使用的编译器必须是i386.i386-ppc-gcc,和i386.i386-i386-gcc没有任何关系的

一定需要i386.i386-ppc-gcc,肯定是Lib和binutils的问题。只有发现了i386.i386-ppc-gcc后,make才会觉得系统上已经有了合适的Lib和binutils。从程序的角度上说,i386.i386-i386-gcc,一步跳到i386.ppc-arm-gcc没有任何问题的。可是gcc编译的过程需要其他软件的支持太多,系统必须尽可能的知道周围的环境

回答完毕:)
回复 支持 反对

使用道具 举报

发表于 2006-2-19 22:00:21 | 显示全部楼层
谢谢,我只是想看的时候更直观,不用琢磨另外的参数是什么。你后边加什么都可以。嘿嘿。

个人认为:
./configure --target=arm --host=ppc --build=i386这3个参数里面,--build是没有用处的。整个过程使用的编译器必须是i386.i386-ppc-gcc,和i386.i386-i386-gcc没有任何关系的

一定需要i386.i386-ppc-gcc,肯定是Lib和binutils的问题。只有发现了i386.i386-ppc-gcc后,make才会觉得系统上已经有了合适的Lib和binutils。从程序的角度上说,i386.i386-i386-gcc,一步跳到i386.ppc-arm-gcc 没有任何问题的。可是gcc编译的过程需要其他软件的支持太多,系统必须尽可能的知道周围的环境

正确。不过这个是要在 toolchain 建立起来后,才会有的效果。
如果没有任何一部分,都会导致失败。我怀疑等我们把这个问题弄清楚的话,我们就是 toolchain 专家了。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-19 22:15:56 | 显示全部楼层

CLFS走一遍就可以了吧

CLFS走一遍就可以建立toolchian,i386.i386-ppc-gcc就产生了。
CLFS走二遍,我们不就到终点了。
为i386.ppc-arm-gcc的提前诞生,庆祝一下

我的机子太旧(毒龙1G,256的DDR266内存),估计走不到终点了。实在没有那么多耐心 。
走一遍就心满意足了。:cool:

有劳[color="Red"]版主和[color="red"]youbest兄完成重任了,等你们的好消息。呵呵

有空还得把我的RH9=>liveCD=>LFS完成,再去细看CLFS。
本来是冲着LFS来的,和版主的讨论严重跑题了,远的不能再远。
不过收获蛮大的;)

看看我最开始提及的CLFS,CCLFS,CCCLFS,CCCLFS,其时那时我的思路还蛮对的,深入下去后思路有些乱,还好最后终于浮出了水面。深刻领悟“有浅入深易,有深入浅难”
回复 支持 反对

使用道具 举报

发表于 2006-2-20 00:19:29 | 显示全部楼层
Post by 终极幻想
呵呵,一步是可以搞定,不过是要你的 toolchain 都齐全的情况下。你现在是要建立 toolchain,:)。鸡和蛋的问题。


  我要好好检讨一下自己了,很多看来重要的问题都还没有深入的研究,差点就犯了经验主义了。

  早先我也是想回答可以一步完成的,因为以前曾编译过交叉编译的工具链,不过当时只涉及两个系统,也仔细研究了一下--build、--host和--target三个参数,所以想当然的写了,不过又仔细看了一下之前的回帖,想了想后来又把回答的内容给删掉了,因为实在无法确定是否能成功。
  现在看来还真悬啊,看来这“想当然”还真的很危险,还是实践出真知啊!

  等待进一步证实。
回复 支持 反对

使用道具 举报

发表于 2006-11-21 15:38:26 | 显示全部楼层
非常感谢三位的精彩讨论。
在good02xaut先生第一步编译,得到i386.i386-ppc-gcc之后,如何设置当前的gcc编译环境(比如lib是否需要更改为for ppc的lib),让系统能够使用i386.i386-ppc-gcc编译gcc源代码得到我们最终需要的i386.ppc-arm-gcc这个文件呢?
解决这个问题,就可以在i386主机上得到任何的i386.ppc-any-gcc了,比如i386.ppc-ppc-gcc :-)
回复 支持 反对

使用道具 举报

发表于 2008-3-23 18:16:56 | 显示全部楼层
学习ing~~~~~
回复 支持 反对

使用道具 举报

发表于 2008-3-24 11:02:09 | 显示全部楼层
感谢这位朋友把这篇2年前的老帖子顶上来了,否则我都没机会看到,更别说改正其中的错误了。

下面是唯一可行的CCLFS工具链的做法:(以i386-ppc-arm为例)

1、创建i386-ppc工具链。这一步的必要性楼上很多人都看见了,因为
      a) ppc-arm的gcc需要host ppc的Glibc,否则就无法运行
      b) ppc-arm gcc的生成需要能理解ppc二进制格式的binutils,因为所有中间生成的.o文件都不是i386的。

2、创建i386-arm工具链。这一步的必要性楼上的人基本上都没有看见。为什么这是必须的呢?理由很简单:ppc-arm的gcc要能够顺利在i386上编译,除了必须有host ppc的glibc外,还必须有host-arm的glibc,否则将只能编译C编译器,无法编译C++编译器。你也不能指望象CLFS那样,用没有glibc编译出来的C编译器来编译glibc,然后再重新编译gcc,理由是host ppc的gcc在i386上运行不了。那么,唯一的选择只能是专门编译一个i386-arm工具链,然后用它编译arm上的glibc。

3、创建ppc-arm工具链。这一步就不用多说了。

如果说,i386-ppc-arm对于很多人都无法找到实验平台的话,我建议想实践的朋友考虑另一种CCLFS:cygwin-linux-hurb,也就是说,试一下在Windows上的Cygwin平台上编译一个在Linux上运行的工具链,并且它生成的代码要在hurb上运行。在Cygwin平台编译,以及编译出hurb代码所需的参考资料都可在本论坛找到。
回复 支持 反对

使用道具 举报

发表于 2008-4-3 22:32:46 | 显示全部楼层
Post by 地球发动机;1830193
如果说,i386-ppc-arm对于很多人都无法找到实验平台的话,我建议想实践的朋友考虑另一种CCLFS:cygwin-linux-hurb,也就是说,试一下在Windows上的Cygwin平台上编译一个在Linux上运行的工具链,并且它生成的代码要在hurb上运行。在Cygwin平台编译,以及编译出hurb代码所需的参考资料都可在本论坛找到。


what's hurb?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表