Как связать статическую или общую библиотеку с модулем ядра?

В aaa.c есть функция

  int myadd(int a, int b){
return a+b;
}

и aaa.c был встроен в статическую библиотеку с использованием

gcc -c aaa.c -o aaa.o && ar -cr libaaa.a aaa.o

и общая библиотека с использованием

gcc -c aaa.c -o aaa.o && gcc -shared -fPCI -o libaaa.so aaa.o

Потом я написал файл call.c, и попытался вызвать функцию myadd() в libaaa.so, но не удалось.

Пожалуйста, дайте мне совет,

test.c:
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("Dual BSD/GPL");
extern int myadd(int a, int b);
static int hello_init(void)
{
int c = 0;
printk(KERN_ALERT "hello,I am Destiny\n");
c = myadd(1, 2);
printk(KERN_ALERT "res is (%d)\n", c);
return 0;
}

static void hello_exit(void)
{
printk(KERN_ALERT "goodbye,kernel\n");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_AUTHOR("Destiny");
MODULE_DESCRIPTION("This is a simple example!\n");
MODULE_ALIAS("A simplest example");

Этот Makefile превратит оба файла c в call.ko, и он будет работать. Но это не то, что я хочу.
Makefile:

KVERSION = $(shell uname -r)

obj-m       = call.o
call-objs   = aaa.o test.o

Debug:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules

All:Debug

cleanDebug:
make -C /lib/modules/$(KVERSION)/build M=/home/Destiny/myProject/kernel/cbtest/ clean

clean:cleanDebug

installDebug:Debug
rmmod /lib/modules/2.6.18-348.12.1.el5/test/call.ko
/bin/cp call.ko /lib/modules/$(KVERSION)/test/
depmod -a
insmod /lib/modules/2.6.18-348.12.1.el5/test/call.ko

install:installDebug

main.o : defs.h

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]