gpt4 book ai didi

gcc - 使用 crosstool-NG 的 ARM 交叉编译器的正确选项是什么

转载 作者:行者123 更新时间:2023-12-02 00:08:10 30 4
gpt4 key购买 nike

我正在尝试构建一个交叉编译器,以使用 crosstool-NG 来定位在我的 NAS 盒子上运行的处理器。 .

NAS 盒子是 ZyXEL NSA210 ,有一个example dmesg output/proc/cpuinfo 是:

Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 183.09
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 5
...
Hardware : Oxsemi NAS
Revision : 0000
Serial : 00000d51caab2d00

目标选项页面上的选项,()中的标志和我当前的设置:

  • 目标架构( ARM )
  • 使用 MMU(是)
  • 字节序(小字节序)
  • 位数(32 位)
  • 默认指令集模式(arm)
  • 使用 EABI(是)
  • 架构级别 --with-arch= ()
  • 发出 CPU 程序集 --with-cpu= ()
  • 调整 CPU ()
  • 使用特定的 FPU ()
  • 浮点(软件)
  • objective-c FLAGS ()
  • 目标 LDFLAGS ()

我一直在“架构级别”和“CPU 发出程序集”中尝试各种组合,例如 arm926ej-sarmv5larmv5tej ,但我不知道哪个选项在哪里。

我已将目标操作系统设置为裸机,因为 crosstool-NG 没有在盒子上使用的 Linux 版本。

此外,一旦构建了工具链,我是否需要再次将相同的选项传递给编译器。

到目前为止,我们的尝试刚刚产生了非法指令消息。

编辑

如果有人可以向我指出一篇有关设置 ARM GCC 工具链的文章,并明确引用如何找出正确的参数,那就可以回答我的问题。

最佳答案

尝试其中之一

--with-arch=armv5te
--with-tune=arm926ej-s

--with-cpu=arm926ej-s

(两者兼有是没有意义的)。

否则你的选择看起来不错。

如果仍然不起作用,那么您需要查看库和 header 。如果您想使用动态链接库,那么您需要拥有与目标上的库、版本和名称相匹配的库。如果您想使用静态链接,或者将您自己的共享库复制到目标上(也许在非标准位置,这需要额外的配置),那么应该没问题。

无论哪种方式,您都需要匹配内核 header 。您也许可以从 kernel.org 下载一些当代的内核头文件。

关于gcc - 使用 crosstool-NG 的 ARM 交叉编译器的正确选项是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10253603/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com