使用 Sourcery Toolchain 在 Windows 上交叉编译 ARM 的 Linux 内核



我正在尝试在Windows主机上为ARM目标(飞思卡尔i.Mx28(交叉编译Linux内核。我知道与使用 Linux 主机相比,这种方法不是最好的方法,但不幸的是,这不是由我决定的。

限制是:

    内核
  • 必须是飞思卡尔提供的内核(L2.6.35_MX28_SDK_10.12(
  • 它必须使用 Sourcery Toolchain 和 CodeBench 构建
  • 整个事情必须在Windows上完成
到目前为止,我

解决了Windows上缺少的大小写敏感性,以便我可以使用Cygwin提取内核源代码。但是现在我在内核 Makefile 上遇到了问题。我认为 Windows 路径存在一些问题,因为我收到错误消息 *** multiple target patterns. Stop. ,该消息来自路径中的:以及配置时有关依赖项检查的其他错误:

      HOSTCC  scripts/basic/fixdep
    /usr/bin/sh: scripts/basic/fixdep: cannot execute binary file
    make[1]: *** [scripts/basic/fixdep] Error 126
    make: *** [scripts_basic] Error 2

有没有办法移植 Makefile 而不必重写它,或者有没有另一种方法可以在不使用给定的 Makefile 的情况下构建内核?我可以使用源工具链或 IDE 来处理生成文件吗?有没有办法在给定的限制内构建内核?

若要交叉编译内核,需要两个编译器:一个能够生成在生成环境中运行的工具,另一个可以为目标创建可执行文件。

看起来你并没有真正交叉编译,但你刚刚替换了你的编译器。您现在正在构建 ARM 构建所需的工具,并尝试在 Windows 上运行它们。

您可以指定要使用的交叉编译器:

make ARCH=arm CROSS_COMPILE=your-compiler-prefix- ...

您可能还遇到文件系统问题。Windows 中的文件系统不区分大小写,内核构建可能会在大小写很重要的地方创建文件。要在 Windows 上获得对不区分大小写的文件系统的支持,您可以查看 Windows Services for UNIX。

使用另一个工具链!CodeBench 与在 Windows 主机上构建 Linux 不兼容,无论他们在他们的网站上放了什么关于使用 CYGPATH 的眼睛糖果(谎言(等。

我自己已经尝试了几个星期,问题是CodeBench接受POSIX路径,但坚持输出Win32路径,这些路径在Linux Kernel Make过程中很难控制,如果不是不可能的话。

我并不是说这是不可能的;我相信这是可能的。但不管你的老板告诉你什么,这都不值得花时间。还有更多的问题需要考虑。另一个问题是 Linux 源代码./scripts目录中的工具与 Windows 环境不直接兼容,因此,尽管它们可能会编译,但它们不会按预期运行。它们需要修补!

你最好的机会是用Cygwin编译你自己的交叉编译器。或者找一个已经为你煮熟的。

最新更新