为MIPS编译Linux内核

时间:2015-11-22 09:26:57

标签: linux-kernel mips cross-compiling

我有一台32位MIPS机器,并希望在其上运行Linux。我需要使用我的Windows 7机器将Linux交叉编译为MIPS。我很困惑如何解决这个问题。有人能告诉我这是什么步骤,为什么?我不了解这个过程中涉及的所有不同工具。感谢。

1 个答案:

答案 0 :(得分:7)

操作系统问题

嗯,您可以(理论上)在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)。

部件

首先,您需要确定需要构建哪些组件。如果你有嵌入式系统 - 对于初学者我建议你做下一步:

  • 构建bootloader;我推荐U-Boot
  • 单独构建Linux内核(来自heregit clone稳定版本)
  • 构建BusyBox - 基于rootfs
  • flash bootloader,内核和rootfs映像到您的设备

现在你的工作环境很短。

工具链

在构建任何内容之前,请确保已安装MIPS toolchain并正确配置了您的环境(shell)。有两种工具链:

  1. ELF工具链(名称中包含-elf-none-eabi):适用于bare-metal计划。您应该使用它来构建引导加载程序和内核。
  2. GNU/Linux工具链(名称中包含-linux-gnu-linux-gnueabi):它取决于Linux system calls并且具有C标准库,因此它适用于构建在Linux下运行的用户空间应用程序。您应该使用它来构建BusyBox,因为它是用户空间程序。
  3. 我可能会建议您查看Sourcery CodeBench工具链。特别是你对下一个感兴趣:

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

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

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

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

      $ export ARCH=mips
      
    4. 现在,您可以像使用x86一样构建内核和BusyBox:

      $ make <target>
      

      有用的阅读

      正如评论中所建议的那样,看看OpenWrt项目可能是值得的,因为它是针对MIPS架构的(它是各种路由器非常流行的开源固件)而且它是&#39 ;广泛使用MIPS工具。查看OpenWrt build system文档,了解这些工具。