linux中生成内核模块时部分函数undefined的应对方法
2012-10-29 16:10
537 查看
在生成内核模块时出现下面这种警告: WARNING: "symbol_name" [xxxx/xxx.ko] undefined!
其中" "里是函数名称,[]里是所生成的模块位置。
出现这种警告是由于 欲在模块A中调用模块B里的函数,这个函数必须要用 EXPORT_SYMBOL(函数名)的形式给导出,不然就会发出这样的警告。
EXPORT_SYMBOL(函数名)怎么用网上有相关文章。这里更关心的是这种警告要不要考虑呢,因为编应用程序时习惯性的不考虑warining,
但是这里的警告还是得留下意。
生成内核模块,在编译连接的时候没和内核打交道,可能会找不到某些已经 EXPORT_SYMBOL 出来的函数,但是由于你生成的是一个内核模块,所以LD不提示error,而是给出一个warning,寄希望于在insmod的时候,内核能够把这个 EXPORT_SYMBOL 连接上。如果insmod的时候它查到了之前警告的undefined的诸多函数,那一切安好,便是晴天;要是它还找不到这些undefined的函数,那天崩地裂,错误连连。
所以说看到这些warning时想一想它警告的这些函数有没有在已经存在的内核当中EXPORT_SYMBOL出来了。
原文链接:
http://blog.sina.com.cn/s/blog_7d44748b010169g0.html
其中" "里是函数名称,[]里是所生成的模块位置。
出现这种警告是由于 欲在模块A中调用模块B里的函数,这个函数必须要用 EXPORT_SYMBOL(函数名)的形式给导出,不然就会发出这样的警告。
EXPORT_SYMBOL(函数名)怎么用网上有相关文章。这里更关心的是这种警告要不要考虑呢,因为编应用程序时习惯性的不考虑warining,
但是这里的警告还是得留下意。
生成内核模块,在编译连接的时候没和内核打交道,可能会找不到某些已经 EXPORT_SYMBOL 出来的函数,但是由于你生成的是一个内核模块,所以LD不提示error,而是给出一个warning,寄希望于在insmod的时候,内核能够把这个 EXPORT_SYMBOL 连接上。如果insmod的时候它查到了之前警告的undefined的诸多函数,那一切安好,便是晴天;要是它还找不到这些undefined的函数,那天崩地裂,错误连连。
所以说看到这些warning时想一想它警告的这些函数有没有在已经存在的内核当中EXPORT_SYMBOL出来了。
原文链接:
http://blog.sina.com.cn/s/blog_7d44748b010169g0.html
相关文章推荐
- linux中生成内核模块时部分函数undefined的应对方法
- linux中生成内核模块时部分函数undefined的应对方法
- 快速编译Linux内核需要的模块方法
- 【转载】在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- (转载) 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 怎样用linux内核生成自己的模块
- Linux 2.6版内核中通过模块获取sys_call_table地址的方法
- Linux下随机数生成的函数与常见方法
- LINUX 2.6 内核下多C文件模块编译方法
- STM32 cubeMX 前期项目未生成部分模块,后期需要添加功能模块时出现L6218E错误问题的解决方法
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- Ubuntu12.10 内核源码外编译 linux模块--编译驱动模块的基本方法
- Ubuntu12.10 内核源码外编译 linux模块--编译驱动模块的基本方法
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL)
- driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL)
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- Linux驱动部分-(一)内核模块的编写
- GDB简单调试linux内核与模块的方法
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink