This bug can be reproduced this way on x86_64. * make sure none of libelf-dev, libelf-devel or elfutils-libelf-devel installed. # make distclean * generate a default .config where CONFIG_UNWINDER_ORC is enabled by default. # make menuconfig (exit -> save) # grep CONFIG_UNWINDER_ORC .config CONFIG_UNWINDER_ORC=y # make menuconfig (unselect CONFIG_UNWINDER_ORC) # grep CONFIG_UNWINDER_ORC .config # CONFIG_UNWINDER_ORC is not set # make Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel # grep CONFIG_UNWINDER_ORC include/config/auto.conf CONFIG_UNWINDER_ORC=y This is due to this receipe in Makefile had never been executed even though .config has is more recent than auto.conf. # The actual configuration files used during the build are # stored in include/generated/ and include/config/. Update # them if .config is newer than include/config/auto.conf #(which mirrors .config). include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig Actually, replaced that rule with any rule would never executed the recipe there, For example, /tmp/noexist: $(warning "never print anything")