insmod 模块1调用模块2 提示找不到模块2里面函数的问题总结

2024-05-14 20:58

本文主要是介绍insmod 模块1调用模块2 提示找不到模块2里面函数的问题总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源码:

modules2.c

#include <linux/module.h>
#include <linux/init.h>
#include <linux/moduleparam.h>int print_console(int a)
{printk("The value of a is : %d\n",a);return 0;
}//EXPORT_SYMBOL(print_console);int __init test_init(void)
{printk("insmod ok\n");return 0;        
}void __exit test_exit(void)
{printk("bye\n");
}module_init(test_init);
module_exit(test_exit);MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("ATHEROS");
MODULE_DESCRIPTION("hello module test");
MODULE_SUPPORTED_DEVICE("AR7241"); 

modules1.c

#include <linux/module.h>
#include <linux/init.h>
#include <linux/moduleparam.h>extern int print_console(int);static int b;
module_param(b, int, S_IRUSR|S_IWUSR);
MODULE_PARM_DESC(b,  "A number");int __init test_init(void)
{printk("insmod OK \n");print_console(b);return 0;
}void __init test_exit(void)
{printk("bye\n");
}module_init(test_init);
module_exit(test_exit);MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("ATHEROS");
MODULE_DESCRIPTION("hello module test");
MODULE_SUPPORTED_DEVICE("AR7241"); 

先insmod  modules2.ko

然后insmod modules1.ko b=2

提示未定义的函数print_console 

所以在模块2里面定义了函数,就必须

EXPORT_SYMBOL(print_console);
使函数对所有内核公开,在2.6必须这么做,以前的老内核貌似不用。


第二,给模块传参数必须要 加b=2 例如insmod modules1.ko b=2

这点和c语言不一样,刚开始我直接insmod modules1.ko 2 结果报错Unknown parameter

所以总结到这里给自己长点记性。

 


这篇关于insmod 模块1调用模块2 提示找不到模块2里面函数的问题总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989838

相关文章

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.