Сборка модуля завершилась с ошибкой “Нет правила для создания цели”

Вопрос или проблема

Я пытаюсь собрать модули в папке “drivers/md/”, следуя шагам в ответе Как (рецепт) собрать только один модуль ядра?

Но я получаю следующую ошибку:

# make -C /lib/modules/$(uname -r)/build M=drivers/md modules
make: Вход в каталог '/usr/src/linux-headers-5.0.0-36-generic'
make[2]: *** Нет правила для создания цели 'drivers/md/bcache/alloc.o', необходимой для 
'drivers/md/bcache/bcache.o'. Остановка.
make[1]: *** [scripts/Makefile.build:515: drivers/md/bcache] Ошибка 2
make: *** [Makefile:1614: _module_drivers/md] Ошибка 2
make: Оставление каталога '/usr/src/linux-headers-5.0.0-36-generic'

Что я делаю не так?

Ошибка говорит вам, что у вас нет файла drivers/md/bcache/alloc.o, доступного для сборки, в тот момент, когда make ищет его. Ваш путь к файлу должен обычно выглядеть как ../drivers/md/bcache/alloc.o, или даже лучше, вы можете добавить точный каталог, используя аргумент -I для gcc.

Для полного и менее неоднозначного ответа, пожалуйста, добавьте ваш MakeFile в исходный пост.

Ответ или решение

Ошибка, которую вы получаете при сборке модуля в каталоге "drivers/md/", связана с тем, что система сборки не может найти целевой объектный файл drivers/md/bcache/alloc.o. Это может происходить по нескольким причинам. Вот несколько шагов, которые могут помочь решить эту проблему:

  1. Проверьте наличие файлов: Убедитесь, что в каталоге drivers/md/bcache/ существуют все необходимые исходные файлы, включая alloc.c. Если какого-либо файла не хватает, вам нужно будет его восстановить или сгенерировать.

  2. Проверьте Makefile: Убедитесь, что в вашем Makefile корректно указаны все зависимости. Возможно, вы упустили какие-то файлы или неправильно указали пути. Пример правильной структуры для модуля может выглядеть так:

    obj-$(CONFIG_BCACHE) += bcache/
  3. Обновите заголовки ядра: Проверяйте, что у вас установлены актуальные заголовочные файлы ядра для версии, которую вы используете. Это можно сделать с помощью команды:

    sudo apt-get install linux-headers-$(uname -r)
  4. Сборка всего каталога: Если вы пытаетесь собрать отдельный модуль, попробуйте собрать весь каталог drivers/md/. Это позволит скомпилировать все зависимости и модули:

    make -C /lib/modules/$(uname -r)/build M=drivers/md/
  5. Проверка конфигурации: Убедитесь, что ваш .config файл содержит настройки для нужного вам модуля. Это можно сделать, выполнив:

    grep BCACHE /path/to/.config
  6. Очистка и повторная сборка: Иногда помогает очистка предыдущих сборок. В каталоге модуля используйте команду:

    make clean

    После этого попробуйте снова выполнить сборку.

  7. Логи сборки: Если ошибка сохраняется, посмотрите на более детальную информацию в логах сборки, чтобы выявить конкретное место, где происходит сбой.

Если вы выполните указанные выше шаги и все равно столкнетесь с трудностями, пожалуйста, прикрепите содержимое вашего Makefile и выведенные сообщения об ошибках для получения более конкретных рекомендаций.

Оцените материал
Добавить комментарий

Капча загружается...