小编Bug*_*rum的帖子

具有多个文件的内核模块 - 未知符号

你好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)

linux kernel module loadmodule undefined-symbol

4
推荐指数
1
解决办法
6065
查看次数

标签 统计

kernel ×1

linux ×1

loadmodule ×1

module ×1

undefined-symbol ×1