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

Sil*_*ker 4 gcc arm cross-compiling toolchain crosstool-ng

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

NAS盒是ZyXEL NSA210,有一个示例dmesg输出/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
Run Code Online (Sandbox Code Playgroud)

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

  • 目标架构(臂)
  • 使用MMU(是)
  • 字节序(小字节序)
  • 位数(32位)
  • 默认指令设置模式(手臂)
  • 使用EABI(是)
  • 架构级别--with-arch =()
  • 为CPU发出汇编程序--with-cpu =()
  • 为CPU调音()
  • 使用特定的FPU()
  • 浮点数(软件)
  • 目标CFLAGS()
  • 目标LDFLAGS()

我一直在'架构层面“装配:发射CPU”尝试各种组合,如arm926ej-sarmv5larmv5tej,但我不知道哪个选项去哪里。

我将Target OS设置为裸机,因为crosstool-NG的包装盒上没有使用Linux版本。

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

到目前为止,通过尝试已经产生了Illegal instruction消息。

编辑

如果有人能指出我有关建立ARM GCC工具链的文章,其中明确引用了如何找到正确的参数,那将回答我的问题。

ams*_*ams 5

尝试其中之一

--with-arch=armv5te
--with-tune=arm926ej-s
Run Code Online (Sandbox Code Playgroud)

要么

--with-cpu=arm926ej-s
Run Code Online (Sandbox Code Playgroud)

(两者都没有意义)。

否则,您的选择看起来不错。

如果仍然无法使用,则需要查看库和标头。如果要使用动态链接的库,则需要具有与目标库,版本和名称相匹配的库。如果要使用静态链接,或将自己的共享库复制到目标上(可能在非标准位置,这可能需要额外的配置),则应该没事。

无论哪种方式,都需要您的内核头文件进行匹配。您可能只需要从kernel.org下载一些当代的内核头文件。

  • 您不能在Linux下运行裸机程序。 (2认同)