我无法在powerpc / mips / armeb / sparc上编译glibc。如何在不模仿整个系统的情况下测试bigendian?
我目前正在尝试测试一些代码以确保它适用于大端系统(它没有)并修复任何大端错误。目前我正在使用带有PowerPC debian映像的qemu-system-ppc
并在该映像中进行编译,以及在那里运行gdb等。但是,这是非常低效的,我知道有更好的方法。
因此我按照this教程创建了一个交叉编译器,这样我就可以将我的源代码编译成一个大端系统,然后运行用户空间qemu-???
来测试它,而不需要运行的开销模拟空间中的整个操作系统(特别是使用-S
开关,我可以在主机上运行gdb,其中多更快)。
首先尝试的是powerpc。起初我刚用--target=powerpc
运行配置,但意识到我应该使用完整的三元组并使用powerpc-unknown-linux-gnu
。不幸的是,当我到达glibc部分时,我遇到的问题是我的gcc不支持IBM 128位长双精度(它只支持IEEE)。我用Google搜索,似乎不是一个解决办法(除了更新gcc过去的v4.1 - 我现在在6.2)。
让我们试试mips然后,无论如何我都有更多的经验(来自大学)。这使它再次成为glibc部分,但这次它抱怨它无法确定ABI。我尝试了所有-linux-gnu
-gneabi
-eabi
和-none
,但它无法确定其中任何一个的ABI。
好的,是时候试试armeb了。这次它通过确定ABI,然后转储一条消息,说明glibc尚不支持目标。与sparc相同的故事。
鉴于上述所有方法都失败了 - 如何将我的little-endian系统中的交叉编译器编译为生成可执行文件的big-endian系统,我可以使用qemu在用户空间中运行?