我在编译发现OMAPZoom.org在Android 2.6.35内核和我坚持我的想法是愚蠢的Makefile问题。Ç未定义的引用功能 - 编译的Android/Linux内核
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'
驱动程序/视频/ 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设置。
我真的不知道我还能放什么东西在这里,这将是有益的,但如果有东西,将是有用的问我。我希望有人能够推动我朝着正确的方向前进。
.o文件中未定义的引用往往是由于缺少链接依赖项,而不是缺少的包含。 (虽然一个可能的例外是如果一个头文件实际上应该提供实现代码,而不是仅仅提供一个原型)你可以检查源代码中的特定行是否正在编译,方法是在那里放一个#error并验证这个停止构建,但它正在编译但未链接的可能性仍然存在 - 您可能需要查看为该构建阶段发布的完整命令。您也可以在.o文件中查找标识符。 –
这是一个巧妙的诀窍,我将不得不把它留存以备将来使用。谢谢。 – CatShoes