LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1661|回复: 6

制作交叉编译工具链时产生的一个问题深深地、深深地困扰了我

[复制链接]
发表于 2009-6-12 11:33:19 | 显示全部楼层 |阅读模式
问题的产生:
我打算制作一个交叉工具链,可以跨发行版,就是这个工具链能运行在不同发行版上,就像网上提供的工具链一样,下载下来解压,然后指定此工具链的PATH,就可以进行交叉编译工作。

我的做法:
在virtualbox上虚拟了ubuntu8.04,根据youbest的这篇文章 http://zdbr.net.cn/download/Loongson64-1.1.htm 中的“制作交叉工具链”部分,制作了mips64el交叉工具链,在虚拟的ubuntu8.04下测试工具链,可以正常编译;然后我将${BUILDDIR}/cross-tools搬到我的主机ubuntu8.10下面,再测试编译一个简单的c程序的时候,就提示找不到stdlib.h stdio.h这些库文件。

我归结的原因:
1. 虚拟机或ubuntu本身的问题。
2. "交叉编译工具链的本质就是在宿主上生成目标机代码的工具,自然要链接到宿主c库", 交叉工具链搬到8.10下以后,“宿主c库”发生了变化,导致工具链无法使用。

求解:

我归结的原因哪个是正确的?都不正确?那到底是什么原因?
到底应该怎么做一个跨发行版的交叉编译链呢?
谢谢。
发表于 2009-6-12 19:47:55 | 显示全部楼层
你编译软件的时候用的是你主系统的工具链吧。
回复 支持 反对

使用道具 举报

发表于 2009-6-13 08:15:01 | 显示全部楼层
1. 是 UB 本身问题,因为默认安装时很多提供头文件的 xxx-dev 之类的"开发包"是没有装上的,你要知道是那些包再把它们 apt-get 回来,也许抓个 build-essential 回来可以解决一部份问题,其余就要看软件的依赖了

2. 请详细阅读 CLFS 手册,并先了解制作时对宿主系统有何软硬件要求
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-15 09:47:34 | 显示全部楼层
Post by 冷血封情;1997068
你编译软件的时候用的是你主系统的工具链吧。
是阿,交叉工具链的制作大部分都使用主系统的工具链(即我的virtualbox ubt8.04)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-15 10:06:37 | 显示全部楼层
Post by d00m3d;1997241
1. 是 UB 本身问题,因为默认安装时很多提供头文件的 xxx-dev 之类的"开发包"是没有装上的,你要知道是那些包再把它们 apt-get 回来,也许抓个 build-essential 回来可以解决一部份问题,其余就要看软件的依赖了

2. 请详细阅读 CLFS 手册,并先了解制作时对宿主系统有何软硬件要求


ubuntu这点可不好,折腾人。
之前也听说ubt下制作的交叉工具链有问题,果然!
另外还有个问题:cross-tools目录下的各个子目录都是干嘛用的?不同目录层次下的bin,include,lib好像是在不同编译阶段生成的,但他们之间的区别还不甚了解;尤其像i486-cross-linux-gnu/mips64el-unknown-linux-gnu/和mips64el-unknown-linux-gnu/这两个目录有什么关系?他们下面的bin,include,lib看的人眼夸缭乱。
回复 支持 反对

使用道具 举报

发表于 2009-6-16 20:22:20 | 显示全部楼层
还有一点,用 UB 做 host 要把 mawk 改成 gawk 才行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-19 11:06:48 | 显示全部楼层
Post by d00m3d;1998495
还有一点,用 UB 做 host 要把 mawk 改成 gawk 才行


o,这点倒是注意到了
回复 支持 反对

使用道具 举报

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

本版积分规则

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