在 Arm 板上编译的 makefile 编译错误

Posted

技术标签:

【中文标题】在 Arm 板上编译的 makefile 编译错误【英文标题】:makefile compilation error for compiling on Arm board 【发布时间】:2015-10-25 10:24:30 【问题描述】:

我想在我的基于 ubuntu 12.0.4 LTS 的操作系统 (xillinux) 上安装 rt8192cu 驱动程序,该操作系统在 ARM 处理器(微型化板、zynq 处理器)上运行。

git clone https://github.com/dz0ny/rt8192cu.git

输入上述命令进入目录后,输入make,出现如下错误。

make[1]: Entering directory `/usr/src/kernels/3.12.0-xillinux-1.3'
Makefile:579: /usr/src/kernels/3.12.0-xillinux-1.3/arch/armv7l/Makefile: No such file or directory
make[1]: *** No rule to make target `/usr/src/kernels/3.12.0-xillinux-1.3/arch/armv7l/Makefile'.  Stop.
make[1]: Leaving directory `/usr/src/kernels/3.12.0-xillinux-1.3'
make: *** [modules] Error 2

makefile 可以在https://github.com/dz0ny/rt8192cu/blob/master/Makefile找到

我使用的基于 ubuntu 的操作系统是 http://xillybus.com/downloads/doc/xillybus_getting_started_zynq.pdf

如何修改 makefile 以直接在我的平台上编译?

【问题讨论】:

你可能需要在输入make之前运行configure进行交叉编译。 @πάνταῥεῖ 我不想在这里交叉编译。我想直接在我的平台上编译。那么我应该如何修改make文件呢? 啊,我错过了这一点。无论如何运行configure 是通常的方式。 @πάνταῥεῖ 好的,如果我尝试在我的 ubuntu 操作系统(Windows 中的虚拟机)上进行交叉编译,我该如何使用 configure 进行交叉编译?我是交叉编译的新手,所以需要你的帮助。 【参考方案1】:

即使安装了 linux-headers 有时也会失败,一个快速的解决方法是:

ln -s /lib/modules/`uname -r`/build/arch/arm /lib/modules/`uname -r`/build/arch/armv7l

一个长期的解决方法是使用相同的点配置文件从源代码编译您自己的配置并安装所有东西。

【讨论】:

【参考方案2】:

如果我理解正确,您正在尝试为 RT8192CU Wi-Fi IC 编译 Linux 内核模块。 此外,您正在 Zynq 上直接运行 Ubuntu,并且您正在尝试就地编译。

您收到的错误是由于缺少内核标头,即“3.12.0-xillinux-1.3”,它应该与您正在使用的内核版本相同(尝试在终端中写入 uname -r)。

最快的解决方法是让 Ubuntu 安装所需的源/头文件(假设内核模块针对分发提供的源,并且您在发出以下命令时正在运行该特定内核)

$ sudo apt-get install linux-headers-$(uname -r)

【讨论】:

这不是与arch/armv7l 子目录不存在(也不会存在)有关吗?这本身就意味着某些东西直接从 uname 设置了$ARCH,而不是让 Kbuild 正确地计算出来。 @Notlikethat 你可能是对的,忽略了那个细节,我认为所有内核 src 目录都丢失了......假设头文件存在,他应该能够像你一样使用make ARCH=arm 进行编译建议。 无论如何,作为嵌入式开发人员,我建议从适当的“受控”环境(即构建机器)交叉编译内核和树外驱动程序。

以上是关于在 Arm 板上编译的 makefile 编译错误的主要内容,如果未能解决你的问题,请参考以下文章

如何用arm-linux-gcc编译驱动程序,Makefile文件怎么写?

为啥在两台略有不同的机器上编译的库的行为略有不同?

在 AXP 服务器上编译的问题

66AK2G12 ,K2GEVM开发板上编译Uboot的步骤

66AK2G12 ,K2GEVM开发板上编译Uboot的步骤

66AK2G12 ,K2GEVM开发板上编译Uboot的步骤