Kompilacja modułu jądra linux

0

Cześć,
Chciałem stworzyć moduł jądra Linux który jako argumenty przyjmie moje imię, oraz dwie liczby całkowite, a potem wypisze imię oraz sumę tych liczb na standardowym wyjściu. Niestety plik się nie kompiluje. Dostaję komunikat: make[2]: *** Brak reguł do zrobienia obiektu '/home/rafal/Core/core.o', wymaganego przez '/home/rafal/Core/core.mod'. Stop. Poniżej wklejam kod Makefile oraz modułu. Ktoś podpowie co jest nie tak.

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

static char *my_name= "Janusz";
module_param(my_name, charp, 0644);
MODULE_PARM_DESC(my_name, "String");

static int first_value = 1;
module_param(first_value, int, 0644);
MODULE_PARM_DESC(first_value, "Integer");

static int second_value = 2;
module_param(second_value, int, 0644);
MODULE_PARM_DESC(second_value, "Integer");

static int __init my init(void)
{
int sum;
sum= first_value+second_value;

	printk(KERN_INFO "[parameters] Init module!\n");
	printk(KERN_INFO "[parameters] my_name = %s\n", my_name);
	printk(KERN_INFO "[parameters] sum = %d\n", sum);

	
	return 0;
}

void __exit my_exit(void)

module_init(my_init);
module_exit(my_exit);
obj-m := core.o
KERNELDIR = /lib/modules/$(shell uname -r)/build

all:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
	
clean:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) clean

1

Nie wiem dokładnie jak wywołujesz kompilację, jaką masz dokładnie strukturę plików, ale jak chcesz sensowny przykład minimalistycznego modułu, i jak go budować, to proszę:
https://students.mimuw.edu.pl/ZSO/PUBLIC-SO/2020-2021/06_modules/index.html
Źródła nie byle jakie!

1

@believer88: Po usunięciu oczywistych błędów jak brak ciała proc my_exit(), oraz poprawieniu nazwy proc "my init" na "my_init", u mnie kompiluje się poprawnie. Przy czym kompiluję przy pomocy "make" bez jakichkolwiek parametrów. Zakładam również, że plik ze źródłami nazwałeś "core.c" bo jeśli nazwałeś go inaczej to właśnie taki błąd możesz dostać jak "brak reguł do zrobienia...".

0

@vtx: Dzięki wielkie, poprawiłem te błędy o których pisałeś. Mój plik nazywał się "Core.c". Tutaj też poprawiłem na wielką literę, teraz wszystko dobrze chodzi. Enedil, dzięki za link, na pewno skorzystam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1