LinuxForum.Fans
Тема

Вопрос по компиляции .с файла

Автор: u_________________5 9 сообщений 1367 просмотров
#263773

Здравствуйте, не нашел раздела "Для начинающих", поэтому тему создал тут. Недавно появилась задача программирования под linux. Изучаю соответствующую литературу. Нужно скомпилировать исходник. Для этого создан Makefile (приведен в книге)

text

    % make
    make[1]: Entering directory `/usr/src/linux-2.6.10'
    CC [M] /home/ldd3/src/misc-modules/hello.o
    Building modules, stage 2.
    MODPOST
    CC /home/ldd3/src/misc-modules/hello.mod.o
    LD [M] /home/ldd3/src/misc-modules/hello.ko
    make[1]: Leaving directory `/usr/src/linux-2.6.10'
    % su
    root# insmod ./hello.ko
    Hello, world
    root# rmmod hello
    Goodbye cruel world
    root#

При вызове команды make выдается сообщение

*** команды встречены до первого определения цели. Останов.
То, что пути в файле надо скорректировать под свою систему понимаю. Думаю, что ошибка сейчас не из-за этого. Гулил, в чем может быть проблема не понял.
Centos 6.2
Kernel linux 2.6.32-220.23.1.el6.x86_64
#263774

То, что приведено в вашем сообщении, Makefile-ом не является. Приведён результат выполнения команд "make" и "insmod ./hello.ko".
Если хотите пообсуждать Makefile, приводите его содержимое.

#263777
"Гуляев Вячеслав" написал:
Здравствуйте, не нашел раздела "Для начинающих"

Все разделы форума подойдут для начинающих =)
Раздел выбран правильно.
verg

#263779

Мне кажется, что речь вот об этой книжке: http://www.makelinux.net/ldd3/chp-2-sect-2
Linux Device Drivers, 3rd Edition
By Jonathan Corbet, Greg Kroah-Hartman, Alessandro Rubini

Это так?

#263780


Это так?

Да, только для удобства понимания, выбрал ее перевод.

#263782

Да, он. В первом сообщении не Makefile, а какой-то листинг? Как скомпилировать приведенный в примере файл?

#263783

Эх. давайте почитаем вместе...


Пожалуйста, обратите внимание ещё раз, чтобы указанная выше последовательность команд заработала, вы должны иметь правильно сконфигурированное и собранное дерево ядра там же, где Makefile будет искать его (/usr/src/linux-2.6.10 в показанном примере). Мы углубимся в детали сборки модулей в разделе "Компиляция и загрузка".

... в разделе "Компиляция и загрузка".
Перейдя по ссылке прочтём


После того как вы всё установили, создать Makefile для модуля просто. Фактически, для примера "hello world", приведённого ранее в этой главе, достаточно будет одной строчки:
text

obj-m := hello.o

и далее... Стоит ли уделять этому внимание на текущем этапе -- решать вам. Где-то на сайте O'Reily должен быть архив с примерами к книге.
#263785

Спасибо, попробую дальше разобраться сам.

Войдите или зарегистрируйтесь, чтобы ответить.