我正在尝试在 ARM 设备(即 PocketCHIP)上编译 OpeniBoot,按照本指南(不过,考虑到我没有使用 Raspberry Pi,因此做了一些小修改。)OpeniBoot 是一个定制的低级引导加载程序,旨在安装在 Apple 设备上,例如 iPod Touch 或 iPhone。它允许用户在运行普通 iOS 内核的同时运行 Linux 内核,以及执行其他低级操作。
为了编译 OpeniBoot 的二进制文件,我已成功编译并安装了列出的几乎所有依赖项。但是,运行时scons iPhone4
出现错误:
chip@chip:~/openiBoot$ scons iPhone4
...
arch-arm/asmhelpers.sx: Assembler messages:
arch-arm/asmhelpers.sx:212: Error: selected processor does not support `wfi'
scons: *** [arch-arm/iPhone4_asmhelpers.o] Error 1
scons: building terminated because of errors.
我研究过这个错误,发现此解决方案:
通过在编译器选项中添加“-mcpu=cortex-a8”来修复此问题。
我已经尝试将该选项附加到 scons 命令本身,语法类似于此:
scons -mcpu=cortex-a8 iPhone4
无济于事。
所以问题是:使用时如何将选项传递给编译器scons
?
- 编辑 -
我已经解决了这个问题,通过将文件“ARMEnviroment.SConscript”中的一行更改为如下内容:
plat_flags = ['-mlittle-endian', '-mfpu=vfp', '-mthumb', '-mthumb-interwork', '-fPIC', '-mcpu=cortex-a8']
但是,现在我在编译时遇到一个新错误:
chip@chip:~/openiBoot$ scons iPhone4
...
arch-arm/entry.sx:0: error: bad value (cortex-a8) for -mcpu= switch
scons: *** [arch-arm/iPhone4_entry.o] Error 1
scons: building terminated because of errors.
我相信这是因为scons
仍然使用随安装的旧工具链apt-get
GCC-4.9.2,而不是使用openiboot-toolchain
我已经编译的(我相信这对于编译该程序是必要的)。
所以问题是,我如何更改scons
用于编译代码的工具链?