当前位置: 首页 > 面试题库 >

从Linux交叉编译到ARM-ELF(ARM926EJ-S / MT7108)

张晔
2023-03-14
问题内容

到目前为止,我已经在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- 给出以下列表,

  1. gcc-4.7-aarch64-linux-gnu-GNU C编译器
  2. gcc-4.7-arm-linux-gnueabi-GNU C编译器
  3. gcc-4.7-arm-linux-gnueabi-base-GCC,GNU编译器集合(基本软件包)
  4. gcc-4.7-arm-linux-gnueabihf-GNU C编译器
  5. gcc-4.7-arm-linux-gnueabihf-base-GCC,GNU编译器集合(基本软件包)
  6. gcc-4.7-multilib-arm-linux-gnueabi-GNU C编译器(multilib文件)
  7. gcc-4.7-multilib-arm-linux-gnueabihf-GNU C编译器(multilib文件)
  8. gcc-aarch64-linux-gnu-用于arm64体系结构的GNU C编译器
  9. gcc-arm-linux-gnueabi-用于armel架构的GNU C编译器
  10. 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 可能是使用 OABI进行
编译的,并且/或者与编译器所针对的版本相比,已经很古老了。在某些情况下, libc 会调用较新的 Linux API ,而该 API
可能不存在。如果未将编译器/ libc配置为向后兼容,则它可能不适用于您的系统。您可以使用crosstool-ng创建一个自定义编译器,该编译器的构建适合您的系统,但这要复杂得多。



 类似资料:
  • 本文档说明如何在kali linux上配置ARM交叉编译环境,是我们多份关于”定制ARM镜像”的文档的起点. 开发机的配置 编译内核生成镜象通常需要大量硬盘空间.确保你的开发机至少有50G可用硬盘空间以及足够的内存,CPU不要太差. 安装依赖 先安装ARM交叉编译所需的依赖. apt-get install git-core gnupg flex bison gperf libesd0-dev b

  • 我试图交叉编译一个linux系统的简单hello world程序。 我有以下资料: null 我试图运行/lib/libc.so.0来获取版本信息,但出现了一个分段错误。它似乎用-static编译解决了这个问题。所以我想这是libc库的问题。谢谢你的帮助。

  • 问题内容: 我已经安装在Windows机器上的Go 1.2,写了一个虚拟的程序和设置环境变量,并以“AMD64”及“LINUX”。 当我发出“ ”命令时,出现错误: 这是什么意思? 问题答案: 它告诉您需要先构建所有工具,然后才能使用它们。 如果您的Windows GOARCH是amd64,则可以通过运行以下小批处理程序来“构建”所有必需的工具: 如果成功,那么您应该能够执行您所描述的操作(只使用

  • 问题内容: 我对在x86主机上为ARM目标交叉编译Linux内核感兴趣。您推荐一些好的做法吗?您认为哪个是最好的交叉编译套件?您是否建立了自定义的交叉编译环境?如果是,您有什么建议?这是个好主意吗? 问题答案: 我为ARM / Linux工具使用了两种方法。最简单的方法是直接下载预构建的工具链。 优点 :它可以正常工作,您可以继续进行项目中有趣的部分。 缺点 :您选择了他们所选择的gcc / bi

  • 我正在尝试为Android ARM交叉编译llvm/clang。 我也尝试了这里列出的所有步骤,以及在这里找到的指南,但没有运气。 任何帮助都将不胜感激。谢了! 编辑:现在我正在使用以下命令: 错误消息:CLANG36++:警告:编译过程中未使用参数:'-bundle'/users/paschalis/androide/toolchains/gcc/bin/../lib/gcc/arm-linux