我在模块printt中添加了EXPORT_SYMBol(printtty),在insmod ./printt.ko之后,可以在/ proc / kallsyms中看到printtty()的信息.
模块hello的make过程可以正常进行.但insmod ./hello.ko会导致如下错误:
insmod: ERROR: Could not insert module hello.ko: InvalID parameters
和dmesg显示
hello: no symbol version for printttyhello: UnkNown symbol printtty (err -22)`.
我已经修好了
(1)将.ko文件复制到/ lib / modules / version / kernel下面的位置
(2)将导出的符号添加到/lib/modules/version/build/Module.symvers
但我想知道有没有办法从外部模块导出符号(不修改内核源代码树)?
解决方法 在你的hello模块的Makefile的最顶部添加这一行:KBUILD_EXTRA_SYMBolS := /home/your-user/path/to/printt/Module.symvers
(务必将正确的路径放入printt模块).
现在重建你的hello模块,它将被加载得很好.
有关详细信息,请参见Documentation/kbuild/modules.txt,“6.3来自另一个外部模块的符号”.
总结以上是内存溢出为你收集整理的linux – 如何从外部模块导出符号?全部内容,希望文章能够帮你解决linux – 如何从外部模块导出符号?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)