Yes, this means your Image file of the kernel did not have the correct “CONFIG_LOCALVERSION” during the time it was built. This results in looking for modules in the wrong location.
Your build procedure can be perfect, but if the kernel was told the wrong place to look for modules (and that is basically what not setting CONFIG_LOCALVERSION is when reusing modules), then there is no possibility of success. You must set this manually, or it will be missing.
When people cross compile they use more options to avoid the build system being confused as to whether it is building for local hardware or other hardware. CONFIG_LOCALVERSION is not about the local build environment, but is instead about what the kernel Image file looks at at runtime. Those other options are about the local build environment, and although it might seem like they are related, they are quite independent topics. It would not have mattered if you had built the kernel locally on the Jetson instead of with all of those options in cross compile…there would have been the same failure to find kernel modules.
Always manually specify LOCALVERSION. You can edit the “.config” file:
CONFIG_LOCALVERSION="-tegra"
…or you can edit it from “make menuconfig” or “make nconfig”…or you can set the “LOCALVERSION="-tegra"” prior to the build (some environment variables are inherited by the built if those variables were not specifically set in the .config).