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

Linux kernel 使用Sourcery Toolchain在Windows上交叉编译ARM Linux内核,linux-kernel,arm,embedded-linux,toolchain,codesourcery,Linux Kernel,Arm,Embedded Linux,Toolchain,Codesourcery,我正在尝试在Windows主机上为ARM目标()交叉编译。我知道与使用Linux主机相比,这种方法不是最好的,但不幸的是,这不是由我来决定的 这些限制包括: 内核必须是由飞思卡尔()提供的 它必须使用Sourcery构建 整个过程必须在Windows上完成 我做到了这一点,我解决了Windows上缺少的区分大小写的问题,这样我就可以使用Cygwin提取内核源代码。但是现在我遇到了内核生成文件的问题。当我收到错误消息***多目标模式时,我认为Windows路径存在一些问题。停止。,它来自路径中

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

这些限制包括:

  • 内核必须是由飞思卡尔()提供的
  • 它必须使用Sourcery构建
  • 整个过程必须在Windows上完成
我做到了这一点,我解决了Windows上缺少的区分大小写的问题,这样我就可以使用Cygwin提取内核源代码。但是现在我遇到了内核生成文件的问题。当我收到错误消息
***多目标模式时,我认为Windows路径存在一些问题。停止。
,它来自路径中的
,以及配置时与依赖项检查有关的其他错误:

      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来处理生成文件吗?
有没有办法在给定的限制范围内构建内核?

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

看起来您并不是真正的交叉编译,但您刚刚更换了编译器。现在,您正在构建构建ARM所需的工具,并尝试在Windows上运行这些工具

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

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

您可能还存在文件系统问题。Windows中的文件系统不区分大小写,内核构建可能会创建与大小写有关的文件。要获得对Windows上不区分大小写的文件系统的支持,您可以查看。

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

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

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


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

您应该询问您的板支持提供商和编译器供应商。您不能简单地安装Linux虚拟机吗?它将在windows上运行,在VirtualBox上运行需要30分钟…这正是我自己发现的…最终我放弃了,并说服所有人开始在Linux上构建Linux,因为其他一切都是愚蠢的^^^如果你想知道这一问题如此严重的所有细节,请仔细查看此wikientry。更新到上面。