Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

#include <linux/module.h>

#include <linux/kernel.h> // printk

 

MODULE_AUTHOR("Denis Kolisnichenko dhsilabs@mail.ru");

MODULE_DESCRIPTION("Linux kernel module");

 

int init_module()

{

printk(“My module: Starting... ”);

return 0;

}

 

void cleanup_module()

{

printk(“My module: Stopping... ”);

return 0;

}

Уже готово четыре различных листинга модуля, а мы еще не знаем, как его откомпилировать. Сделано это предумышленно: компилировать имеет смысл только последний листинг.

Для компилирования модуля ядра вам понадобится установленный компилятор gcc, файлы заголовки и исходные тексты ядра – мы ведь занимаемся разработкой модуля ядра. Проще говоря, нужно установить следующие пакеты:

n  cpp – препроцессор cpp;

n  binutils – набор различных утилит (as, gprof, ld и др.);

n  glibc-kerheaders – заголовочные файлы ядра;

n  glibc-devel – вспомогательные файлы для разработки приложений с использованием стандартной библиотеки C;

n  gcc – компилятор gcc;

n  kernel-source – исходные тексты ядра Linux.

Устанавливать пакеты нужно в указанной последовательности. Если компилятор gcc у вас установлен, то вам нужно установить только последний пакет – исходные тексты ядра.

Также нужно убедиться, что наше ядро поддерживает динамически загружаемые модули. Для этого перейдите в каталог /usr/src/linux-2.4 (или /usr/src/linux) и введите команду make menuconfig. Вы получили сообщение, что библиотека Ncurses не найдена? Установите пакеты ncurses (или ncurses4) и ncurses-devel и введите команду make menuconfig снова.

Убедитесь, что в разделе Loadable module support включена опция Enable loadable module support (см. рис. 1).

Рисунок  1. Конфигурирование ядра

Если опция Enable loadable module support выключена, ее нужно включить, сохранить файл конфигурации ядра и перекомпилировать ядро. О компиляции ядра вы можете прочитать в моей книге «Linux-сервер своими руками» («Наука и техника», 2002 г.) или в статье «Компилирование ядра»: http://dkws.narod.ru/linux/kernel/kern.html.

Компилятору gcc нужно передать много параметров, поэтому мы напишем так называемый Makefile, облегчающий нам жизнь при компилировании/перекомпилировании модуля.

Листинг 6. Makefile нашего модуля (Makefile)

 

CC=gcc

PATH=/usr/include /usr/src/linux-2.4/include

MODFLAGS:= -O3 -Wall –DLINUX –D__KERNEL__ -I$(PATH)

module.o: module.c

$(CC) $(MODFLAGS) -c module.c


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100