不要发现任何规则' kernel-toolchain' 。停止

时间:2014-07-10 05:24:53

标签: path makefile arm freebsd

我正在尝试在ARMv8基础模型上获得FreeBSD端口。 我正在关注[1]的维基。但是,我无法超越构建工具链的步骤。

a)根据第一步,我可以下载所有binutils,它位于我的主目录中。

b)接下来要求更改根Makefile的PATH。所以我把它改成了

**export PATH= $PATH:/aarch64-freebsd-sandbox/toolchain/build/aarch64-none-freebsd10/bin/**

c)接下来,步骤是制作内核工具链。但是当我输入

**make kernel-toolchain TARGET=arm64** 

它出错了

**make: *** No rule to make target `kernel-toolchain'.  Stop.**

我确实回显了$ PATH,发现路径添加正确。

可能是什么问题?

[1] https://wiki.freebsd.org/arm64

谢谢!

1 个答案:

答案 0 :(得分:1)

要做到这一点,你必须从一个有效的FreeBSD系统开始。 Linux的交叉编译不起作用。如果您使用的是FreeBSD 10,则可以使用附带的svnlite,如果您使用的是早期版本,则需要安装/usr/ports/devel/subversion端口。

首先,你需要按照维基上的描述构建binutil。

然后你应该下载维基页面上提到的分支。此分支应安装在/usr/src首先备份内容,以防您必须重建当前系统!);

# mv /usr/src /usr/orig-src
# mkdir /usr/src
# svnlite co https://svn0.us-west.FreeBSD.org/base/projects/arm64 /usr/src

然后编辑Makefile中的/usr/src以包含特殊binutils 的路径。否则,将首先找到您正在运行的任何架构的正常二进制文件,这将无效。

之后你可以构建内核工具链;

# cd /usr/src
# make kernel-toolchain TARGET=arm64
# make _includes TARGET=arm64

然后你必须构建加载器;

# make buildenv TARGET=arm64

这将打开一个新shell。从那个shell你应该运行;

# make -C lib/libstand obj all
# make -C sys/boot -DWITHOUT_FORTH obj all

不要退出那个shell,因为还有更多。我假设内核构建过程或多或少是标准的,在wiki上没有提到;

# make buildkernel

此命令需要在make buildenv打开的shell中运行。

注意:运行make installkernel。这可能会让您的x86 PC带有ARM内核。 : - )

wiki没有提到构建用户空间,它只显示启动过程,因此我不知道它是否有效。

您需要一个Linux机器(或VM)来运行ARMv8仿真器。您将必须提供您为此模拟器构建的内核和引导加载程序,但我不知道如何执行此操作。你肯定需要在freebsd-arm邮件列表中接受它!