Модули ядра:.o по сравнению с .ko

Для Вашего содержания файла

FILE "/path_to_file/filename" TXT

сделайте что-то как

grep FILE  input.txt | while read line 
  do
    fname=`echo $line | awk -F\" '{print $2}'`  # this separates the line by the quotes
                                                # result is like /path_to_file
    echo $fname # just to check it 
    if [ -f $fname ]
    then
      ls -l $fname
      echo "file exists"
    else
      echo "no file there $file"
    fi
  done
10
22.02.2013, 22:31
2 ответа

Я нашел следующий ответ здесь:

Короткий ответ - то, что .ko файл является Вашим объектным файлом, связанным с некоторым ядром, автоматически генерировал структуры данных, которые необходимы ядру.

.o файл является объектным файлом Ваших модулей - результат компиляции Ваших c файлов. Система сборки ядра затем автоматически создает другой файл C с некоторыми структурами данных, описывающими модуль ядра (названный your_module_kmod.c), скомпилируйте этот файл C в другой объектный файл, и связывает Ваш объектный файл и объектный файл, который это создало вместе для создания .ko файла.

Динамический компоновщик в ядре, которое отвечает за загружающиеся модули ядра, ожидает находить структуру данных, ядро вставило объект kmod в .ko файле и не сможет загрузить Ваш модуль ядра без них.

Также из того источника, цитируя tldp: до 2,4 версий ядра, это был ".o", и с тех пор 2.6, это - ".ko".

11
27.01.2020, 20:01

Это кажется старым практическим руководством (учебное руководство), в фактах это было записано в 2005. Когда ядро Linux было 2.4.x, модули имели.o расширение, в то время как в 2,6 они стали .ko

3
27.01.2020, 20:01

Теги

Похожие вопросы