从Linux交叉编译到ARM-ELF(ARM926EJ-S / MT7108)
到目前为止,我已经在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-
给出以下列表,
- gcc-4.7-aarch64-linux-gnu-GNU C编译器
- gcc-4.7-arm-linux-gnueabi-GNU C编译器
- gcc-4.7-arm-linux-gnueabi-base-GCC,GNU编译器集合(基本软件包)
- gcc-4.7-arm-linux-gnueabihf-GNU C编译器
- gcc-4.7-arm-linux-gnueabihf-base-GCC,GNU编译器集合(基本软件包)
- gcc-4.7-multilib-arm-linux-gnueabi-GNU C编译器(multilib文件)
- gcc-4.7-multilib-arm-linux-gnueabihf-GNU C编译器(multilib文件)
- gcc-aarch64-linux-gnu-用于arm64体系结构的GNU C编译器
- gcc-arm-linux-gnueabi-用于armel架构的GNU C编译器
- gcc-arm-linux-gnueabihf-用于armhf体系结构的GNU C编译器
您应该安装 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
其中参数已调整为系统 内存子系统 时序。
您可能无法使用这些gcc
版本,因为您的 Linux 可能是使用
编译的,并且/或者与编译器所针对的版本相比,已经很古老了。在某些情况下, libc 会调用较新的 Linux API ,而该 API
可能不存在。如果未将编译器/ libc配置为向后兼容,则它可能不适用于您的系统。您可以使用crosstool-ng创建一个自定义编译器,该编译器的构建适合您的系统,但这要复杂得多。
以上是 从Linux交叉编译到ARM-ELF(ARM926EJ-S / MT7108) 的全部内容, 来源链接: utcz.com/qa/419126.html