编译驱动指定额外的Module.symvers文件
2017-07-21 09:58
232 查看
插入内核模块时,遇到2.6.26之后内核的一个小bug(Bug 12446 - Unable to insmod module. Unknwon symbol)
这是linux kernel 2.6.26 之后版本的bug (详细描述, 请看http://bugzilla.kernel.org/show_bug.cgi?id=12446)
并且这个bug不会被fix
解决办法是把mod_a的Module.symvers放到mod_b的当前路径,从而编译mod_b,符号信息会自动连接进去.
或者在mod_b的makefile中使用KBUILD_EXTRA_SYMBOLS指定mod_a的Module.symvers, 如:
KBUILD_EXTRA_SYMBOLS=/mod_a/Module.symvers
编译mod_b时,搜索Module.symvers的路径是:
1, kernel source path, e.g. /usr/src/kernels/linux-2.6.28.10
2, makefile中M=所指定的路径, 它等效于变量KBUILD_EXTMOD的值
3, 变量KBUILD_EXTRA_SYMBOLS的值
这是linux kernel 2.6.26 之后版本的bug (详细描述, 请看http://bugzilla.kernel.org/show_bug.cgi?id=12446)
并且这个bug不会被fix
解决办法是把mod_a的Module.symvers放到mod_b的当前路径,从而编译mod_b,符号信息会自动连接进去.
或者在mod_b的makefile中使用KBUILD_EXTRA_SYMBOLS指定mod_a的Module.symvers, 如:
KBUILD_EXTRA_SYMBOLS=/mod_a/Module.symvers
编译mod_b时,搜索Module.symvers的路径是:
1, kernel source path, e.g. /usr/src/kernels/linux-2.6.28.10
2, makefile中M=所指定的路径, 它等效于变量KBUILD_EXTMOD的值
3, 变量KBUILD_EXTRA_SYMBOLS的值
相关文章推荐
- Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit
- 编译驱动指定额外的Module.symvers文件
- Linux内核驱动将多个C文件编译成一个ko文件的方法——每个C文件里都有module_init与module_exit,moduleinit
- Linux内核驱动将多个C文件编译成一个ko文件的方法——每个C文件里都有module_init与module_exit
- 编译驱动指定额外的Module.symvers文件
- 在linux内核文件中添加自己的驱动,添加自己的linux驱动,编译自己的linux驱动程序方法和例子图文
- linux模块编译需要指定私有的.h头文件目录方法
- MTK USB 驱动安装时 解决“系统找不到指定文件”
- [C/C++] VC2012编译的程序在WinXP下报告“指定的可执行文件不是有效的 Win32 应用程序”错误
- Android NDK 编译时出现make (e=2): 系统找不到指定的文件错误
- win8.1安装驱动出现“文件的哈希值不在指定的目录”的解决办法
- 在WIN10系统下运行VS2013编译成功后出现:无法启动程序“.exe” 系统找不到指定文件的问题的解决方法
- linux 驱动如何编译成module
- linux 驱动 编译加载 , 程序搬移到目标板,驱动源码和头文件位置
- 运行QTP测试脚本后,将编译结果写入指定文件(一)
- 内核驱动常用头文件之--linux/module.h
- 编译驱动和编译应用程序时包含所需的头文件目录
- windows操作系统下:QT编译mysql驱动文件问题总结
- eclipse指定需要编译的文件配置
- 如何将驱动编译进内核 修改Kconfig 和Makefile 文件