+ -
当前位置:首页 → 问答吧 → 制作交叉编译工具链时产生的一个问题深深地、深深地困扰了我

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

时间:2009-06-12

来源:互联网

问题的产生:
我打算制作一个交叉工具链,可以跨发行版,就是这个工具链能运行在不同发行版上,就像网上提供的工具链一样,下载下来解压,然后指定此工具链的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库”发生了变化,导致工具链无法使用。

求解:

我归结的原因哪个是正确的?都不正确?那到底是什么原因?
到底应该怎么做一个跨发行版的交叉编译链呢?
谢谢。

作者: yantao123yt   发布时间: 2009-06-12

你编译软件的时候用的是你主系统的工具链吧。

作者: 冷血封情   发布时间: 2009-06-12

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

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

作者: d00m3d   发布时间: 2009-06-13

引用:
作者: 冷血封情
你编译软件的时候用的是你主系统的工具链吧。
是阿,交叉工具链的制作大部分都使用主系统的工具链(即我的virtualbox ubt8.04)

作者: yantao123yt   发布时间: 2009-06-15

引用:
作者: d00m3d
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看的人眼夸缭乱。

作者: yantao123yt   发布时间: 2009-06-15

还有一点,用 UB 做 host 要把 mawk 改成 gawk 才行

作者: d00m3d   发布时间: 2009-06-17

引用:
作者: d00m3d
还有一点,用 UB 做 host 要把 mawk 改成 gawk 才行
o,这点倒是注意到了

作者: yantao123yt   发布时间: 2009-06-19