You are trying to compile a 2.6.38 file, but include/linux/autoconf.h no longer exists since 2.6.33 (it has been moved to another location in commit 264a26838056fc2d759f58bec2e720e01fcb1bdb ). In addition, you do not need to enable it manually - the kernel build system does this automatically for you (see -include on the gcc command line).
You do not need to run make menuconfig and probably do not change anything with it - the kernel is already configured for your distribution, and changing it to something that does not correspond to the working kernel can lead to module malfunctioning, even make oldconfig not required ; what looks like a message saying to run make oldconfig is actually code to determine if it needs to be printed out in this case (for some reason, the driver you are trying to compile has activated some verbose mode which prints all the commands before running them).
The problem is that the driver you are trying to compile is too old - the Sourceforge release page shows that this is from 2006, when the last kernel was 2.6.18. The internal kernel API is unstable and changes frequently, so even if you correct this error (perhaps simply by deleting the incorrect #include ), it probably still will not compile due to several other changes. The drivers that come with the Linux kernel do not have this problem, because the responsibility for fixing API changes is due to fixing all the drivers, but for drivers that are outside the Linux kernel, the responsibility of the author is to carefully monitor the development of the kernel and fix any driver the time the API changed.
Your options are to find a newer driver (one that works in 2.6.38), or get someone who understands the Linux kernel to upgrade your driver to 2.6.38. And to prevent it from breaking in the future, it must be sent to the Linux kernel.
And in fact, the kernel seems to already have a driver for these devices. It is called gspca_stv06xx and claims that the three USB driver identifiers you tried to compile are more.
source share