我正在尝试使用crosstool-NG构建一个交叉编译器,以便针对我的NAS盒子上运行的处理器进行编译。
NAS盒子是ZyXEL NSA210,这里有一个示例dmesg输出,
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
目标选项页面上的选项,标志和我的当前设置(括号中):
- 目标架构(arm)
- 使用MMU(是)
- 字节序(小端)
- 位数(32位)
- 默认指令集模式(arm)
- 使用EABI(是)
- 体系结构级别--with-arch=()
- 为CPU发出汇编--with-cpu=()
- 为CPU调整()
- 使用特定的FPU()
- 浮点数(软件)
- 目标CFLAGS()
- 目标LDFLAGS()
我一直在尝试在“体系结构级别”和“为CPU发出汇编”中使用各种组合,例如arm926ej-s
,armv5l
,armv5tej
,但我不知道哪个选项应该放在哪里。
我已将目标操作系统设置为裸机,因为crosstool-NG没有该盒子上使用的Linux版本。
另外,一旦构建了工具链,我是否需要再次将相同的选项传递给编译器。
到目前为止,我的尝试只产生了“非法指令”消息。
编辑
如果有人能指向一篇关于设置ARM GCC工具链的文章,并明确说明如何找出正确参数的文章,那将回答我的问题。