ПРЕДУПРЕЖДЕНИЕ: modpost: найдено 10 несоответствий раздела (ов)

Это сообщение об ошибке что-то, о чем я должен беспокоиться?

linux-y3pi:/usr/src/linux-2.6.38.8 # make modules scripts/kconfig/conf --silentoldconfig Kconfig CHK include/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh Building modules, stage 2. MODPOST 2516 modules ***WARNING: modpost: Found 10 section mismatch(es).*** To see full details build your kernel with: 'make CONFIG_DEBUG_SECTION_MISMATCH=y' 

  • Проблема в кросс-компиляции TinyCC с помощью CodeSourcery
  • Компиляция дистрибутивного неспецифического ядра на двух разных дистрибутивах
  • Как определяется конфигурация ядра Linux?
  • VNC с хост-компьютера на Android-телефон под управлением Ubuntu
  • Как установить программы в / usr / local, если они не должны компилироваться с помощью root?
  • Установка Medora 25 Medialess
  • В Gentoo, как мне перестроить все пакеты, зависит от другого пакета?
  • Где мой ALSA, pulseaudio lib
  • One Solution collect form web for “ПРЕДУПРЕЖДЕНИЕ: modpost: найдено 10 несоответствий раздела (ов)”

    Чистая копия этого SO Q & A, решение этого вопроса также полезно для U & L!

    Справка

    • Ядро Linux CONFIG_DEBUG_SECTION_MISMATCH делает ошибки .

    Это просто предупреждение. Системы сборки ядра проверили проверку работоспособности и обнаружили ошибку, которая может быть ошибкой. В предупреждающем сообщении говорится, что где-то в коде ядра есть код, который может привести к несоответствующему доступу по сечениям. Обратите внимание, что ваше ядро ​​построило!

    Чтобы понять, что означает предупреждение, рассмотрим следующий пример:

    Некоторый код ядра в текстовом разделе ядра может пытаться вызвать функцию, помеченную макросом данных __init , который компоновщик помещает в секцию инициализации ядра, которая получает выделение после загрузки или загрузки модуля.

    Это может быть ошибка времени выполнения, поскольку, если код в текстовом разделе вызывает код в секции инициализации после завершения кода инициализации, он в основном вызывает устаревший указатель.

    Сказав это, этот вызов может быть совершенно точным – возможно, что вызовы в текстовом разделе ядра имеют веские основания знать, что он вызывает функцию только в секции инициализации, когда это гарантировано.

    Это, конечно, просто пример. Аналогичные другие сценарии также существуют.

    Решение состоит в компиляции с CONFIG_DEBUG_SECTION_MISMATCH=y которое даст вам выход какой функции пытается получить доступ к данным или функции и к какому разделу они принадлежат. Затем вы можете попытаться выяснить, оправдано ли предупреждение о времени сборки и, если так, надеюсь, исправить.

    Макросы init.h __ref и __refdata могут использоваться для разрешения таких ссылок ссылок без предупреждений. Например,

     char * __init_refok bar(void) { static int flag = 0; static char* rval = NULL; if(!flag) { flag = 1; rval = init_fn(); /* a function discarded after init */ } return rval; } 

    __init_refok и т. д. могут исправить «действительные» экземпляры, поэтому тот факт, что они существуют, может не внушать доверия.

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