androidclinux-kernel

c undefined reference to function - Compiling android/linux kernel


I am compiling the Android 2.6.35 kernel found on OMAPZoom.org and I am stuck with what I think is a silly Makefile problem.

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

yields the following error (plus more that are related):

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 has the following #include directive:

#include <mach/tiler.h>

which I believe references the following file containing the prototype:

arch/arm/mach-omap2/include/mach/tiler.h

In turn, tiler_set_buf_state is defined in:

drivers/media/video/tiler/tiler.c

The function is being used correctly, the header is included. This leads me to think the definition is not being compiled. This project is using a rather large recursive Makefile setup.

I'm not really sure what more I can put in here that will be helpful, but if there is something that would be useful ask me. I was hoping that someone could give me a push in the right direction.


Solution

  • Well this is embarrassing:

    There are two (relevant) branches in that repository:

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

    The first one does not work with OMAP3, or at least with the Zoom3 (board config of android_zoom3_defoncifg).

    To build the kernel for the Zoom3, you must use the second (p-android-omap3-2.6.35) branch or you will get tons of build errors. Wasted most of a day re-writing "broken" code from the first branch thinking it was incorrect since I'm using an older board. Did a checkout on the correct branch and it built without any errors.

    Sorry. Hopefully this will be helpful for someone else!