Как linux kernel Makefile понимает .config?

Как linux kernel Makefile понимает .config? У него есть парсер файла defconfig? Он должен производить много #defines для каждой включенной опции из defconfig, а также поддерживать много мелких Makefile, которые скомпилированы или нет, на основе директив в файле .config.

  • Запустить запуск демона с помощью Linux
  • Запуск установщика .bin в графическом режиме
  • Как защитить мою систему от эксплойта Off-path TCP в Linux?
  • Каков самый чистый способ запланировать команду autoexec.bat как команду в Linux?
  • Начать процесс root при загрузке?
  • Не удается установить драйвер в Arch
  • Можно ли увидеть мертвые успехи?
  • Должен ли я записывать ошибки вверх по течению, моим менеджерам распространения или тому и другому?
  • One Solution collect form web for “Как linux kernel Makefile понимает .config?”

    Синтаксис файла .config совместим с make; например, строка типа CONFIG_CRC16=m устанавливает переменную make CONFIG_CRC16 в значение m . Он анализируется make и включен косвенно в файл Makefile :

    • Makefile содержит -include include/config/auto.conf
    • include/config/auto.conf путем рекурсивного вызова Makefile на цели silentoldconfig .

    Условная компиляция файлов выполняется в основном путем игры с целевыми именами: make-файлы включают такие правила, как

     obj-$(CONFIG_CRC16) += crc16.o 

    Таким образом, целевой obj-y строит все объекты, которые включены как встроенные параметры конфигурации, и obj-m строит все объекты, которые включены в качестве модулей. Существуют также условные директивы в make-файлах для более сложных случаев.

    Для условной компиляции на языке C исходные файлы C включают include/generated/autoconf.h который содержит строки типа #define CONFIG_CRC16_MODULE 1 . Этот файл создается из include/config/auto.conf с помощью программ, вызываемых целями xxxconfig ( scripts/kconfig/conf для пакетных целей, таких как oldconfig , scripts/kconfig/qconf для xconfig и т. Д.); исходный код для этого – scripts/kconfig/confdata.c который выполняет очень простую обработку текста.

    Linux и Unix - лучшая ОС в мире.