4

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

限制是:

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

      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 的情况下构建内核?我可以使用 sourcery 工具链或 IDE 来处理 Makefile 吗?有没有办法在给定的限制内构建内核?

4

2 回答 2

2

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

似乎您并没有真正进行交叉编译,但您刚刚更换了编译器。您现在正在构建构建 ARM 所需的工具并尝试在 Windows 上运行它们。

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

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

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

于 2012-05-24T09:43:36.823 回答
1

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

我自己已经尝试了好几个星期,问题是 CodeBench 接受 POSIX 路径,但坚持输出 Win32 路径,即使不是不可能,也很难在 Linux Kernel Make 程序中控制。

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

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

于 2013-01-17T04:54:49.973 回答