c 对函数的未定义引用 - 编译 android/linux 内核

问题描述 投票:0回答:2

我正在编译在 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 设置。

我不太确定我还能在这里添加哪些内容会有帮助,但如果有什么有用的,请问我。 我希望有人能推动我朝正确的方向前进。

android c linux-kernel
2个回答
1
投票

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

0
投票

这很尴尬:

该存储库中有两个(相关)分支:

p-android-omap-2.6.35
p-android-omap3-2.6.35

第一个不适用于 OMAP3,或者至少不适用于 Zoom3(android_zoom3_defoncifg 的板配置)。

要为 Zoom3 构建内核,您必须使用第二个 (p-android-omap3-2.6.35) 分支,否则您将收到大量构建错误。 浪费了一天的大部分时间从第一个分支重写“损坏的”代码,认为它是不正确的,因为我使用的是旧板。 在正确的分支上进行了检查,并且构建没有任何错误。

抱歉。希望这对其他人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.