Ошибки компиляции программы режима ядра Linux

Я хочу получить доступ к некоторым регистрам моей платы ARM Cortex-A8, которые по умолчанию находятся в недоступном состоянии. На этой плате работает Ubuntu 9.10. Итак, чтобы получить к ним доступ, я должен, в свою очередь, сначала изменить еще 1 параметр реестра (Allow-access-register). Чтобы изменить этот регистр разрешения-доступа, я обнаружил, что должен делать это только в режиме ядра, а не в пользовательском режиме.

Итак, я упомянул, как программировать в режиме ядра, и перешел к этому замечательному руководству < / а>. Я написал эту небольшую программу hello world и make-файл. Обратите внимание, что я все еще запускаю эту программу на своем настольном компьютере x86 (Ubutnu 10.04), а ЕЩЕ НЕ на моем процессоре ARM. Только пока я не начну программировать на уровне ядра.

Я получаю эти ошибки. Что здесь не так?

Помощь!


Ошибки, возникающие на моей плате i.MX515

ubuntu@ubuntu-desktop:~/Documents/Kernel_Programming$ make
make -C /lib/modules/2.6.31-203-gee1fdae/build M=/home/ubuntu/Documents/Kernel_Programming modules
make[1]: Entering directory `/usr/src/linux'
make[1]: *** No rule to make target `modules'.  Stop.
make[1]: Leaving directory `/usr/src/linux'
make: *** [all] Error 2

Я получаю ошибки

ubuntu@ubuntu-desktop:~/Documents$ make
make -C /lib/modules/2.6.32-23-generic/build M=/home/ubuntu/Documents modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-23-generic'
make[2]: *** No rule to make target `/home/ubuntu/Documents/hello-1.c', 
needed by `/home/ubuntu/Documents/hello-1.o'.  Stop.
make[1]: *** [_module_/home/ubuntu/Documents] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-23-generic'
make: *** [all] Error 2

Программа

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

int init_module(void)
{
    printk(KERN_INFO "\nHello World! I'm programming in Kernel Mode\n");

    return 0;
}

void cleanup_module(void)
{
    printk(KERN_INFO "\nBye Bye blue bird\n");
}

файл сборки

obj-m +=hello-1.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

person HaggarTheHorrible    schedule 16.07.2010    source источник


Ответы (2)


Я не знаю, просто это форматирование вашего сообщения или нет, но скрипты сборки ядра ищут «Makefile», а у вас есть «makefile» (разница в регистре). Неужели в этом проблема? Кроме того, ваше имя пользователя "ubuntu"?

person Karmastan    schedule 16.07.2010
comment
Хорошо, я переименовал свой make-файл из makefile в Makefile и получаю новые ошибки (обратитесь к моему вопросу, я его отредактировал) - person HaggarTheHorrible; 16.07.2010
comment
Ваш исходный файл действительно называется hello-1.c? Это то, что ищут скрипты. - person Karmastan; 16.07.2010
comment
Извините, я исправил. После переименования файла у меня было два make-файла, и я выполнял неправильный make-файл. теперь он компилирует и генерирует объектный файл. Спасибо. - person HaggarTheHorrible; 16.07.2010
comment
Привет, Кармастан, новые проблемы! Я взял и свой make-файл, и файл .c на свою доску, попытался запустить свой make-файл и получил ошибки. На моем рабочем столе Linux этого не происходило. (Обратитесь к моему вопросу, я отредактировал его. Ошибки, которые я получаю в разделе моей платы i.MX515) - person HaggarTheHorrible; 16.07.2010
comment
Проблема, которую я вижу, заключается в том, что в / usr / src / я не вижу каталога 2.6.31-203-gee1fdae, поэтому он не работает. - person HaggarTheHorrible; 16.07.2010
comment
У вас действительно установлены заголовки linux на вашем Cortex? Полагаю, что нет. - person Karmastan; 16.07.2010
comment
@vikramtheone: вместо того, чтобы постоянно редактировать свой вопрос, вы должны пометить ответ как принятый для исходной проблемы и опубликовать новый вопрос для новой проблемы. - person caf; 19.07.2010

В вашей команде make есть опечатка, например:

Должен быть:

make -C /lib/modules/2.6.32-23-generic/build M=/home/ubuntu/Documents modules   

нет

make -C /lb/modules/2.6.32-23-generic/build M=/home/ubuntu/Documents modules   
person Nils Pipenbrinck    schedule 16.07.2010
comment
Привет, Нильс, Ой, моя голова стала такой расплывчатой ​​из-за проблемы, с которой я столкнулся, я ничего не вижу прямо :) :) Я исправил это, но у меня появляются эти новые ошибки make. (Обратитесь к моему вопросу, я его отредактировал) - person HaggarTheHorrible; 16.07.2010