首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为特定目标平台设置交叉编译环境

为特定目标平台设置交叉编译环境
EN

Stack Overflow用户
提问于 2010-02-26 02:56:43
回答 4查看 9.6K关注 0票数 3

我想在Ubuntu 9.10机器上建立一个交叉编译环境。从我到目前为止阅读的文档(these onesfor example)来看,这涉及到编译目标平台的工具链。

我的问题是:对于特定的目标平台,如何确定工具链中每个包的所需版本?有没有什么我可以遵循的经验法则?

这是上面链接的网站之一中的一个列表:

binutils-2.16.1.tar.bz2

linux-2.6.20.1.tar.bz2

glibc-2.5.tar.bz2

glibc-linuxthreads-2.5.tar.bz2

gcc-core-4.2.0.tar.bz2

gcc-g++-4.2.0.tar.bz2

但是假设我想为标准的Ubuntu8.04和CentOS 5.3生成可执行文件。必要的包是什么?

我的主要需求是避免像"/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11‘not found“这样的错误出现在客户的机器上,但将来我也想处理不同的架构。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-26 04:51:19

通常,构建一个使用与目标系统上相同版本的libc (和其他库)的跨工具链是一个好主意。对于使用版本化符号的库,这一点尤其重要,否则可能会出现类似"/usr/lib/libstdc++.so.6:找不到版本'GLIBCXX_3.4.11‘“的错误。

相同的架构

要为标准的Ubuntu8.04和CentOS 5.3系统生成可执行文件,您可以在虚拟机中安装这些发行版,并在虚拟机中进行必要的编译,以确保生成的二进制文件与每个发行版的库版本兼容。

另一种选择是为目标发行版设置chroot构建环境,而不是虚拟机。

您还可以针对不同的环境(不同的库版本)构建工具链,并在Ubuntu 9.10环境下构建,而无需使用虚拟机或chroot环境。我已经使用Dan Kegel的创建了这样的跨工具链。

不同的架构

正如我在answer中提到的另一个交叉编译器问题,我使用Dan Kegel的创建了我的arm交叉工具链。

它看起来可能有点过时了,但是有一个适用于各种体系结构的build results矩阵,可以帮助确定合适的组合,包括gcc、glibc、binutils和linux内核头文件。

所需的包版本

在我的经验中,真的没有经验法则。并不是所有组合的gcc、binutils、glibc和linux头文件都能成功构建。即使构建完成,也需要进行一定程度的测试来验证构建的成功。这有时是通过使用新的跨工具链编译Linux内核来实现的。根据目标系统和体系结构的不同,可能需要对源代码进行一些修补才能生成成功的构建。

由于您是在Ubuntu9.10上设置这个交叉编译环境,因此您可能需要查看包。

票数 4
EN

Stack Overflow用户

发布于 2010-02-26 02:59:16

对于其他Linux发行版,编译最简单的方法是将它们安装在虚拟机中(apt-get install kvm),然后从内部进行编译。您还可以编写脚本让它们自动执行此操作。像其他Linux发行版一样,构建交叉编译器并提供所有库的完全相同的版本几乎是不可能的。

票数 2
EN

Stack Overflow用户

发布于 2010-03-03 00:26:52

我的问题是:对于特定的目标平台,如何确定工具链中每个包的所需版本?binutils-2.16.1.tar.bz2 gcc-core-4.2.0.tar.bz2 gcc-g++-4.2.0.tar.bz2

通常选择最新的稳定:这些只影响您的本地工具链,而不是运行时。

linux-2.6.20.1.tar.bz2

你不需要这个。(针对嵌入式平台,您可以使用它。)

glibc-2.5.tar.bz2 glibc-linuxthreads 2.5.tar.bz2

你不需要这些。也就是说,您不应该下载或构建它们;您应该链接到您想要支持的最旧发行版的版本。

有什么我可以遵循的经验法则吗?但是假设我想为标准的Ubuntu8.04和CentOS 5.3生成可执行文件。必要的包是什么?

您调查您想要针对的发行版,找到libc、libstdc++、pthread和您将链接的任何其他共享库的最低公分母版本,然后将这些库和相应的头文件从具有这些LCD版本的盒子中复制到您的工具链。编辑我应该澄清一下,你真的想从一个系统中获得所有的依赖库。从不同的发行版中挑选每个文件版本的LCD是快速进入依赖地狱的秘诀。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2336750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档