制定交叉编译工具_linux – 为特定目标平台设置交叉编译环境

我想在Ubuntu 9.10盒子上设置交叉编译环境.从我到目前为止阅读的文件(these ones,for example)来看,这涉及编译目标平台的工具链.

我的问题是:如何确定特定目标平台工具链中每个软件包的所需版本?我可以遵循任何经验法则吗?

这是在上面链接的其中一个网站中找到的列表:

的binutils-2.16.1.tar.bz2

Linux的2.6.20.1.tar.bz2

的glibc-2.5.tar.bz2

的glibc-Linux线程-2.5.tar.bz2

GCC-核心4.2.0.tar.bz2

gcc-g -4.2.0.tar.bz2

但是假设我想为标准的Ubuntu 8.04和CentOS 5.3盒子生成可执行文件.什么是必要的包裹?

我的主要需求是避免在客户的机器中出现“/usr/lib / libstdc .so.6:版本`GLIBCXX_3.4.11未找到”之类的错误,但在将来我也想要处理不同的架构.

解决方法:

建立一个使用目标系统上相同版本的libc(和其他库)的跨工具链通常是个好主意.这对于使用版本化符号的库来说尤其重要,或者你可能会遇到“/usr/lib / libstdc .so.6:版本’GLIBCXX_3.4.11’未找到”之类的错误.

相同的架构

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

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

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

不同的建筑

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

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

必需的包版本

根据我的经验,确实没有经验法则.并非所有gcc,binutils,glibc和linux标头的组合都能成功构建.即使构建完成,也需要进行一定程度的测试以验证构建的成功.这有时通过使用新的交叉工具链编译Linux内核来完成.根据目标系统和体系结构,可能需要对源进行一些修补才能生成成功的构建.

由于您是在Ubuntu 9.10上设置此交叉编译环境,因此您可能需要查看dpkg-cross程序包.来源:https://www.icode9.com/content-3-358651.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值