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

时间:2012-01-22 19:35:34

标签: linux-kernel arm embedded-linux toolchain codesourcery

我正在尝试在Windows主机上为ARM目标(Linux kernel)交叉编译Freescale i.Mx28。我知道与使用Linux主机相比,这种方法并不是最好的方法,但不幸的是,我不能决定这一点。

限制是:

我到目前为止,我在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?我可以使用sourcery工具链或IDE来处理Makefile吗? 你知道在给定限制内构建内核的其他方法吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

答案 1 :(得分:1)

使用其他工具链! CodeBench与在Windows主机上构建Linux不兼容,无论他们在网站上使用CYGPATH等有什么眼睛(谎言)。我自己试了几个星期,问题是CB接受POSIX路径,但坚持输出Win32路径很难,如果不是不可能在Linux Kernel Make程序中控制的话。 我不是说这是不可能的,我相信这是可能的。但无论你的老板告诉你什么,这都是不值得的。还有更多问题需要考虑。另一个问题是Linux源./scripts目录中的工具与Windows环境不直接兼容,因此,尽管它们可能编译,但它们不能按预期运行。他们需要修补!

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