Модулі ядра: .o проти .ko


10

Здається , що файли , що містять модулі ядра, називаються .o, по крайней мере , це те, що я вважаю, дивлячись на підручник , як цей . Однак на моєму скриньці стискання Debian ці файли, здається, називаються .ko.

Чи залежить від розповсюдження (чи його версії), чи називаються файли .oабо чи .koвони однаково більш-менш однакові?

Відповіді:


11

Я знайшов таку відповідь тут :

Коротка відповідь полягає в тому, що .ko файл - це ваш об’єктовий файл, пов'язаний з деякими ядрами, автоматично генерованими структурами даних, які потрібні ядру.

Файл .o - це об'єктний файл ваших модулів - результат компіляції ваших файлів c. Потім система збирання ядра автоматично створює ще один файл C з деякими структурами даних, що описують модуль ядра (з назвою your_module_kmod.c), компілює цей файл C в інший об'єктний файл і пов'язує ваш об'єктний файл та файл об'єкта, який він створив разом для створення .ko файл.

Динамічний лінкер в ядрі, який відповідає за завантаження модулів ядра, розраховує знайти структуру даних, яку ядро ​​поставило в об'єкт kmod, у файл .ko і не зможе завантажити ваш модуль ядра без них.

Також з цього джерела , посилаючись на tldp : До 2.4 версій ядра це було ".o", а з 2.6 - ".ko".


3

Здається, старий хауто (навчальний посібник), адже він був написаний у 2005 р. Коли ядро ​​Linux було 2.4.x, модулі мали розширення .o, а в 2.6 вони стали .ko

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.