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)
目标选项页上的选项,标志和()中的当前设置:
我一直在'架构层面“装配:发射CPU”尝试各种组合,如arm926ej-s,armv5l,armv5tej,但我不知道哪个选项去哪里。
我将Target OS设置为裸机,因为crosstool-NG的包装盒上没有使用Linux版本。
另外,一旦构建了工具链,我就需要再次将相同的选项传递给编译器。
到目前为止,通过尝试已经产生了Illegal instruction消息。
编辑
如果有人能指出我有关建立ARM GCC工具链的文章,其中明确引用了如何找到正确的参数,那将回答我的问题。
尝试其中之一
--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下载一些当代的内核头文件。