【问题标题】:Compiling the Linux kernel for MIPS [closed]为 MIPS 编译 Linux 内核 [关闭]
【发布时间】:2016-02-24 12:20:06
【问题描述】:

我有一台 32 位 MIPS 机器,想在上面运行 Linux。我需要使用我的 Windows 7 机器将 Linux 交叉编译为 MIPS。我对如何去做这件事感到困惑。有人可以告诉我这是什么步骤,为什么?我不了解此过程中涉及的所有不同工具。谢谢。

【问题讨论】:

  • 在 Windows 机器上交叉编译 Linux 内核听起来像是一个不平凡的项目,尤其是如果您是初学者。既然你说你“想运行 Linux”,听起来你在 MIPS 机器上根本没有安装任何东西。基本上,您想要构建 Linux From Scratch,这是一整本书,而不是 Stack Overflow 的答案。
  • 我怀疑你会得到这个答案。也许在Windows下有办法做到这一点,但它一定很难。此外,我认识的每个人都在使用 Linux 构建内核和 rootfs 来开发 Linux 内核(包括 MIPS 架构)。所以我建议你安装 Linux 发行版(Ubuntu 14.04 就可以)并使用它来构建内核和 rootfs,并将构建的映像刷写到你的设备上。您可能想问一个关于在 Linux 下为 MIPS 构建内核的新问题,但请务必提供更多详细信息(什么是 CPU、什么是设备、内核版本等)。
  • 我认为mingw 项目在这里可以提供帮助,尽管我同意@SamProtsenko 的观点,但它很难做到,例如,找到合适版本所需的一切。
  • @200_success 你假设 MIP 机器上没有任何东西是正确的。处理器实际上是自制的VHDL。很高兴我认为这很困难并没有错。我想我应该将这个问题缩减为在 Windows 上编译 Linux 的必要性。我会阅读给定的链接,它看起来非常好。
  • @Sam Protsenko 这是一个公平的步骤。我可能最终会这样做,但现在对在 Windows 上编译 Linux 的复杂性感到好奇。如果真的那么难,我想弄清楚。

标签: linux-kernel mips cross-compiling


【解决方案1】:

操作系统问题

好吧,您可以(理论上)在 Windows 下构建内核和 BusyBox rootfs,请参阅MIPS toolchain for Windows。但在 Windows 中准备正确的构建环境可能相当困难(可能是 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) 已正确配置。有两种工具链:

  1. ELF 工具链(名称中有-elf-none-eabi):用于bare-metal 程序。您应该使用它来构建引导加载程序和内核。
  2. GNU/Linux 工具链(名称中有 -linux-gnu-linux-gnueabi):它依赖于 Linux system calls 并具有 C 标准库,因此它旨在构建在 Linux 下运行的用户空间应用程序。您应该使用它来构建 BusyBox,因为它是用户空间程序。

我可能会建议您查看Sourcery CodeBench 工具链。尤其是你感兴趣的下一个:

安装工具链后,您需要在工作环境 (shell) 中执行下一步操作。

  1. 更新您的PATH 环境变量,将您的工具链的bin/ 目录添加到其中:

    $ export PATH=/opt/path/to/your/toolchain/bin:$PATH
    
  2. 导出CROSS_COMPILE 环境变量,其中应包含工具链的前缀。例如,如果您在工具链 bin/ 目录中看到 mips-sde-elf-gcc,那么您应该执行下一步:

    $ export CROSS_COMPILE=mips-sde-elf-
    
  3. 导出 ARCH 环境。变种。设置为您的架构:

    $ export ARCH=mips
    

现在您可以像在 x86 上一样构建内核和 BusyBox:

$ make <target>

有用的阅读

正如 cmets 中推荐的那样,可能值得研究 OpenWrt 项目,因为它适用于 MIPS 架构(它是各种路由器的非常流行的开源固件),并且广泛使用 MIPS 工具。查看OpenWrt build system 文档以了解有关这些工具的一些线索。

【讨论】:

    猜你喜欢
    • 2017-03-09
    • 2021-01-16
    • 2011-07-04
    • 1970-01-01
    • 2020-11-14
    • 2011-05-03
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多