我想在Ubuntu 9.10盒子上设置交叉编译环境.从我到目前为止阅读的文件(these ones,for example)来看,这涉及编译目标平台的工具链. 我的问题是:如何确定特定目标平台工具链中每个软件包的所需版本?我可以遵循任何经验法则吗? 这是在上面链接的其中一个网站中找到的列表: 的binutils-2.16.1.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./content-3-358651.html |
|