Bigendian的交叉编译 - 没有有效的架构?

时间:2016-11-01 14:29:19

标签: c linux gcc cross-compiling endianness

TL;博士

我无法在powerpc / mips / armeb / sparc上编译glibc。如何在不模仿整个系统的情况下测试bigendian?

问题描述

我目前正在尝试测试一些代码以确保它适用于大端系统(它没有)并修复任何大端错误。目前我正在使用带有PowerPC debian映像的qemu-system-ppc并在该映像中进行编译,以及在那里运行gdb等。但是,这是非常低效的,我知道有更好的方法。

因此我按照this教程创建了一个交叉编译器,这样我就可以将我的源代码编译成一个大端系统,然后运行用户空间qemu-???来测试它,而不需要运行的开销模拟空间中的整个操作系统(特别是使用-S开关,我可以在主机上运行gdb,其中更快)。

尝试#1:

首先尝试的是powerpc。起初我刚用--target=powerpc运行配置,但意识到我应该使用完整的三元组并使用powerpc-unknown-linux-gnu。不幸的是,当我到达glibc部分时,我遇到的问题是我的gcc不支持IBM 128位长双精度(它只支持IEEE)。我用Google搜索,似乎不是一个解决办法(除了更新gcc过去的v4.1 - 我现在在6.2)。

尝试#2:

让我们试试mips然后,无论如何我都有更多的经验(来自大学)。这使它再次成为glibc部分,但这次它抱怨它无法确定ABI。我尝试了所有-linux-gnu -gneabi -eabi-none,但它无法确定其中任何一个的ABI。

尝试#3:

好的,是时候试试armeb了。这次它通过确定ABI,然后转储一条消息,说明glibc尚不支持目标。与sparc相同的故事。

问题

鉴于上述所有方法都失败了 - 如何将我的little-endian系统中的交叉编译器编译为生成可执行文件的big-endian系统,我可以使用qemu在用户空间中运行?

0 个答案:

没有答案