我正在编译在 OMAPZoom.org 上找到的 Android 2.6.35 内核,但我遇到了一个我认为愚蠢的 Makefile 问题。
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
产生以下错误(以及更多相关错误):
drivers/built-in.o: In function `dsscomp_createcomp':
drivers/video/omap2/dsscomp/device.c:175: undefined reference to `tiler_set_buf_state'
drivers/video/omap2/dsscomp/device.c 具有以下 #include 指令:
#include <mach/tiler.h>
我相信引用了以下包含原型的文件:
arch/arm/mach-omap2/include/mach/tiler.h
反过来,tiler_set_buf_state 定义于:
drivers/media/video/tiler/tiler.c
函数使用正确,包含标题。这让我认为定义没有被编译。 该项目使用相当大的递归 Makefile 设置。
我不太确定我还能在这里添加哪些内容会有帮助,但如果有什么有用的,请问我。 我希望有人能推动我朝正确的方向前进。
drivers/media/video/tiler/Kconfig 说什么?您确定所有 CFLAGS 都设置正确吗?我已经为 omap4 平台构建了一个 android,并且必须在我的 makefile 中传递此变量:“TARGET_BOARD_PLATFORM=omap4”。我还没有确切地追踪到它的去向。(我的系统也有一个复杂的 Makefile)。但你应该确保 ARCH_OMAP4 在您的 makefile 中的某个位置正确设置。
在我的系统上 Kconfig 有:
config TILER_OMAP
tristate "OMAP TILER support"
default y
depends on ARCH_OMAP4
help
TILER driver for OMAP based boards.
config DUCATI_BUFFER_PROTECTION
tristate "OMAP DUCATI input buffer protection"
default y
depends on TILER_OMAP
help
Reserve 8MB memory for input buffer protection
这很尴尬:
该存储库中有两个(相关)分支:
p-android-omap-2.6.35
p-android-omap3-2.6.35
第一个不适用于 OMAP3,或者至少不适用于 Zoom3(android_zoom3_defoncifg 的板配置)。
要为 Zoom3 构建内核,您必须使用第二个 (p-android-omap3-2.6.35) 分支,否则您将收到大量构建错误。 浪费了一天的大部分时间从第一个分支重写“损坏的”代码,认为它是不正确的,因为我使用的是旧板。 在正确的分支上进行了检查,并且构建没有任何错误。
抱歉。希望这对其他人有帮助!