你好stackoverflowers :)
在过去的几个小时里,我一直在尝试编译+加载多个文件模块.编译发出奇怪的警告,模块无法加载.这是模块,Makefile,编译输出和dmesg.
标题:
// header.h
#ifndef _HEADER_H
#define _HEADER_H
void do_module_func(void);
void do_other_func(void);
#endif
Run Code Online (Sandbox Code Playgroud)
'main'模块文件:
//mymodule.c
#include <linux/module.h>
#include <linux/kernel.h>
#include "header.h"
void do_module_func(void)
{
printk(KERN_INFO "module_func\n");
}
static int mymodule_init(void)
{
printk(KERN_INFO "Hello world\n");
do_other_func();
return 0;
}
module_init(mymodule_init);
static void mymodule_exit(void)
{
printk(KERN_INFO "Goodbye, cruel world\n");
}
module_exit(mymodule_exit);
MODULE_LICENSE("GPL")
Run Code Online (Sandbox Code Playgroud)
其他c文件,调用do_module_func()位于"main"模块中的文件
//other_file.c
#include "header.h"
#include <linux/kernel.h>
void do_other_func(void)
{
printk(KERN_INFO "other_func\n");
do_module_func();
}
Run Code Online (Sandbox Code Playgroud)
Makefile文件
//Makefile
obj-m := mymodule.o
mymodule-objs := other_file.o
CROSS:=arm-unknown-linux-gnueabi-
KERNEL:= ~/work/linux-davinci-2.6.38/
ARCH:=arm
PWD:=$(shell …Run Code Online (Sandbox Code Playgroud)