为 MIPS 编译 Linux 内核
Compiling the Linux kernel for MIPS
我有一台 32 位 MIPS 机器,想在上面 运行 Linux。我需要使用我的 Windows 7 机器交叉编译 Linux 到 MIPS。我对如何去做这件事感到困惑。有人能告诉我这是什么步骤吗?为什么?我不了解此过程中涉及的所有不同工具。谢谢
OS 关注
好吧,您可以(理论上)在 Windows 下构建内核和 BusyBox rootfs,请参阅 MIPS toolchain for Windows。但是在 Windows 中准备正确的构建环境可能相当 hard(可能是 Cygwin 或 MinGW,我不确定)。例如,在 Ubuntu 中,您开箱即用,一切就绪。
另一点是开发——使用 Linux 进行 Linux 内核开发更加容易和自然。我认识的每个从事 Linux 内核(包括 MIPS 架构)工作的人都在使用 Linux 进行开发和构建内核和 rootfs。
简而言之:Windows是Linux开发的异类环境,尽量避免使用。
所以我建议您 安装 Linux 发行版 并使用它来构建内核和 rootfs,并将构建的映像闪存到您的设备。最新的 Ubuntu LTS 可以(目前是 Ubuntu 14.04)。
组件
首先,您需要弄清楚需要构建哪些组件。如果您有嵌入式系统——对于初学者,我建议您接下来做:
- 构建引导程序;我推荐U-Boot
- 单独构建 Linux 内核(
git clone
来自 here 的稳定版本)
- 构建BusyBox-based rootfs
- flash 引导加载程序、内核和 rootfs 映像到您的设备
现在你有最小的工作环境。
工具链
在构建任何东西之前,请确保您已安装 MIPS toolchain 并且您的环境 (shell) 已正确配置。有两种工具链:
- ELF toolchain (has
-elf
or -none-eabi
in its name): intended for bare-metal 个程序。您应该使用它来构建您的引导加载程序和内核。
- GNU/Linux toolchain (has
-linux-gnu
or -linux-gnueabi
in its name): it depends on Linux system calls 并具有 C 标准库,因此它旨在用于在 Linux 下构建用户 space 应用程序 运行。您应该使用它来构建 BusyBox,因为它是用户 space 程序。
我可能会建议您查看 Sourcery CodeBench 工具链。下一个你特别感兴趣:
安装工具链后,您需要在工作环境中执行后续操作 (shell)。
更新您的 PATH
环境变量,将您的工具链的 bin/
目录添加到其中:
$ export PATH=/opt/path/to/your/toolchain/bin:$PATH
导出 CROSS_COMPILE
环境变量,其中应包含工具链的前缀。例如,如果您在工具链 bin/
目录中看到 mips-sde-elf-gcc
,那么您应该执行下一步操作:
$ export CROSS_COMPILE=mips-sde-elf-
导出 ARCH 环境。变种。设置为您的体系结构:
$ export ARCH=mips
现在您可以像构建 x86 一样构建内核和 BusyBox:
$ make <target>
有用的阅读
正如评论中所推荐的那样,可能值得研究 OpenWrt 项目,因为它是为 MIPS 架构设计的(它是各种路由器非常流行的开源固件)并且广泛使用 MIPS 工具。查看 OpenWrt build system 文档以获取有关这些工具的一些线索。
我有一台 32 位 MIPS 机器,想在上面 运行 Linux。我需要使用我的 Windows 7 机器交叉编译 Linux 到 MIPS。我对如何去做这件事感到困惑。有人能告诉我这是什么步骤吗?为什么?我不了解此过程中涉及的所有不同工具。谢谢
OS 关注
好吧,您可以(理论上)在 Windows 下构建内核和 BusyBox rootfs,请参阅 MIPS toolchain for Windows。但是在 Windows 中准备正确的构建环境可能相当 hard(可能是 Cygwin 或 MinGW,我不确定)。例如,在 Ubuntu 中,您开箱即用,一切就绪。
另一点是开发——使用 Linux 进行 Linux 内核开发更加容易和自然。我认识的每个从事 Linux 内核(包括 MIPS 架构)工作的人都在使用 Linux 进行开发和构建内核和 rootfs。
简而言之:Windows是Linux开发的异类环境,尽量避免使用。
所以我建议您 安装 Linux 发行版 并使用它来构建内核和 rootfs,并将构建的映像闪存到您的设备。最新的 Ubuntu LTS 可以(目前是 Ubuntu 14.04)。
组件
首先,您需要弄清楚需要构建哪些组件。如果您有嵌入式系统——对于初学者,我建议您接下来做:
- 构建引导程序;我推荐U-Boot
- 单独构建 Linux 内核(
git clone
来自 here 的稳定版本) - 构建BusyBox-based rootfs
- flash 引导加载程序、内核和 rootfs 映像到您的设备
现在你有最小的工作环境。
工具链
在构建任何东西之前,请确保您已安装 MIPS toolchain 并且您的环境 (shell) 已正确配置。有两种工具链:
- ELF toolchain (has
-elf
or-none-eabi
in its name): intended for bare-metal 个程序。您应该使用它来构建您的引导加载程序和内核。 - GNU/Linux toolchain (has
-linux-gnu
or-linux-gnueabi
in its name): it depends on Linux system calls 并具有 C 标准库,因此它旨在用于在 Linux 下构建用户 space 应用程序 运行。您应该使用它来构建 BusyBox,因为它是用户 space 程序。
我可能会建议您查看 Sourcery CodeBench 工具链。下一个你特别感兴趣:
安装工具链后,您需要在工作环境中执行后续操作 (shell)。
更新您的
PATH
环境变量,将您的工具链的bin/
目录添加到其中:$ export PATH=/opt/path/to/your/toolchain/bin:$PATH
导出
CROSS_COMPILE
环境变量,其中应包含工具链的前缀。例如,如果您在工具链bin/
目录中看到mips-sde-elf-gcc
,那么您应该执行下一步操作:$ export CROSS_COMPILE=mips-sde-elf-
导出 ARCH 环境。变种。设置为您的体系结构:
$ export ARCH=mips
现在您可以像构建 x86 一样构建内核和 BusyBox:
$ make <target>
有用的阅读
正如评论中所推荐的那样,可能值得研究 OpenWrt 项目,因为它是为 MIPS 架构设计的(它是各种路由器非常流行的开源固件)并且广泛使用 MIPS 工具。查看 OpenWrt build system 文档以获取有关这些工具的一些线索。