【发布时间】:2013-09-17 16:53:22
【问题描述】:
我正在尝试将 Linux wifi drivers from 3.11 反向移植到 linux-omap-l1(2.6.39)。我在我的 Ubuntu 11.4(内核是 2.6.38-11-generic)上设置了交叉编译器,并验证了交叉编译的内核可以按预期在 ARM 处理器上运行。通过遵循"Usage Guide" section,我还能够将 wifi 驱动程序反向移植到这个 Ubuntu。但是,我在交叉编译 wifi 反向端口时遇到问题。这是我做过的两次尝试:
尝试#1
按照上面相同链接的“交叉编译”部分,我设置了 ARCH(=arm)、CROSS_COMPILER、KLIB_BUILD(=linux-omap-l1 目录)和 KLIB(=linux-omap-l1 目录),运行 make defconfig-wifi,然后运行 make -j4。它没有任何错误就完成了。但是,当我检查生成的 ko 文件时,它们显然没有被交叉编译,因为它们看起来像“rt2x00usb.ko: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV),未剥离"
尝试#2
然后我清理了旧的make结果,将上面的四个宏直接作为参数传递给make,然后再次运行。这次它报告了许多错误,抱怨缺少 printk.h、atomic.h 和 average.h
请帮助解决上述任何一种情况。
【问题讨论】:
-
看看你移植的 Makefile 会很有用。
-
复制defconfig-wifi到.config,然后使用
make ARCH=arm menuconfig。 defconfig-wifi 可能会覆盖您的 ARM 内核 配置。 defconfig-wifi 适用于 x86 吗?最好选择一个工作的.config并设置所需的 Wifi 选项。以某种方式共享您不同的 config 文件。你可以在没有任何 wifi backports 的情况下构建? -
感谢提示。现在我设法生成了正确的 .config 文件(其中包含特定于我的嵌入式内核的所有相同配置项以及新的反向移植项)。但是,当我从 backports 源重复 attemp#2 时,发生了以下错误。错误:内核配置无效。缺少 include/generated/autoconf.h 或 include/config/auto.conf。在内核 src 上运行“make oldconfig && make prepare”来修复它。
-
在您原来的 Attempt#1 方法中,您可以尝试运行
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -j4。请记住将交叉编译器添加到 shell $PATH 并使用CROSS_COMPILE参数传递正确的交叉编译器。
标签: linux-kernel wifi linux-device-driver cross-compiling