Как устранить ошибку «make [1]: *** Нет правила для создания целевого `init / main.o’, необходимого ***» в процессе сборки Linux?

#linux #build #makefile

#linux #сборка #makefile

Вопрос:

Я попытался собрать ядро для версии «RHEL: 2.6.18.128-el5». Я установил исходные файлы rpm, также используя $ rpm -ivh 2.6.18.128-el5.src.rpm, хотя он показывал некоторые предупреждения, я думал, что он установлен правильно. Затем я попытался

 $ cd /usr/src/redhat/SPECS ; rpmbuild -bp kernel*spec
  

и он скопировал все файлы исправлений в исходный код.
Затем я запустил процесс следующим образом:

 [root@localhost 2.6.18-128.el5-i686]# make menuconfig
scripts/kconfig/mconf arch/i386/Kconfig
#
# configuration written to .VVV
#
#
# configuration written to .config
#


*** End of Linux kernel configuration.
*** Execute 'make' to build the kernel or try 'make help'.

[root@localhost 2.6.18-128.el5-i686]# make
scripts/kconfig/conf -s arch/i386/Kconfig
  CHK     include/linux/version.h
  CHK     include/linux/utsrelease.h
make[1]: *** No rule to make target `init/main.o', needed by `init/built-in.o'.  Stop.
make: *** [init] Error 2
  

Кто-нибудь может поделиться подробностями о том, «где ошибка обнаруживается в процедуре и как ее исправить?

Ответ №1:

это потому, что какой-то файл отсутствует, и правило написано для этого отсутствующего файла в файле makefile. не удается найти main.o, необходимый встроенному.o это означает, что какой-то файл, подобный main.cpp отсутствует, и поэтому правило для main.cpp для main.o в makefile не выполняется.

Ответ №2:

Разве вы не должны делать make bzImage or make modules вместо чистого make ?

Проверьте это сообщение.