Debian – Why autoconf.h is not copied automatically to its place

compilingdebianlinuxlinux-kernel

I'm working on a clean Debian 7.7 install. After the install everything was working fine except the webcam in Iceweasel browser. After reading a lot I found that the best solution is to install FlashCam 1.4.5.

After downloading the sources, I did a make and got an error:

  ERROR: Kernel configuration is invalid.
         include/generated/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.


  WARNING: Symbol version dump /usr/src/linux-headers-3.2.0-4-common/Module.symvers
           is missing; modules will have no dependencies and modversions.

  Building modules, stage 2.

Read something and found that I must install the kernel sources and prepare to compile:

apt-get install linux-source linux-source-3.2
tar jxf /usr/src/linux-source-3.2.tar.bz2
cd linux-source-3.2
cp /boot/config-3.2.0-4-amd64 ./.config
make oldconfig
make prepare

Now there is an autoconf.h file in my local linux-sources folder (linux-sources/include/generated/autoconf.h) but not in */usr/src/linux-headers-3.2.0-4-common/include/* where I assume is the folder where FlashCam sources are looking for. What should I do now? Copy by hand this folder is a bit scary and I can't find additional instructions to make it work.

Best Answer

Up to date instructions for building out-of-tree kernel modules are here. Installing the kernel config headers to the system include directory is not part of the procedure. Rather you invoke make from inside the kernel source tree and point it to the module's source tree with the M= parameter.

FlashCam hasn't been updated in a while so it may not be possible to build it against a recent kernel without some porting effort.

Related Question