到目前为止,我已经在ubuntu系统上安装了所有交叉编译软件包,但是遇到了问题,需要一些帮助。
Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 184.72 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : Harvard I size : 32768 I assoc : 4 I line length : 32 I sets : 256 D size : 32768 D assoc : 4 D line length : 32 D sets : 256 Hardware : MT7108 Revision : 0000 Serial : 0000000000000000
这是我需要交叉编译的目标计算机。编译时应使用哪些标志?
apt-cache search arm | grep ^gcc- 给出以下列表,
apt-cache search arm | grep ^gcc-
您应该安装 gcc-arm-linux-gnueabi ,这是 gcc-4.7-arm-linux-gnueabi的别名 。 gcc-4.7-multilib-arm-linux-gnueabi 也可以,但是更复杂。使用标志-march=armv5te -mtune=arm926ej-s -msoft-float -mfloat-abi=soft。您可以通过指定--param NAME=VALUE选项来进行更多调整,gcc其中参数已调整为系统 内存子系统 时序。
-march=armv5te -mtune=arm926ej-s -msoft-float -mfloat-abi=soft
--param NAME=VALUE
gcc
您可能无法使用这些gcc版本,因为您的 Linux 可能是使用 OABI进行 编译的,并且/或者与编译器所针对的版本相比,已经很古老了。在某些情况下, libc 会调用较新的 Linux API ,而该 API 可能不存在。如果未将编译器/ libc配置为向后兼容,则它可能不适用于您的系统。您可以使用crosstool-ng创建一个自定义编译器,该编译器的构建适合您的系统,但这要复杂得多。