首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增加对所有内核模块符号的支持

增加对所有内核模块符号的支持
EN

Stack Overflow用户
提问于 2017-01-21 07:24:28
回答 1查看 292关注 0票数 1

我有一个kernel/trace中存在的模块,比如module.c,我在其中定义了一个符号,我需要将这个符号提供给所有内核模块。我在该模块中使用EXPORT_SYMBOL(mymodule)将其导出到所有modules.But,我没有在其他模块(如/lib/net等)中指定extern type mymodule()。现在,我收到了数千个未定义的引用错误,无法手动将extern添加到所有模块中。是否有任何方法来添加一个extern type mymodule(),以便它被所有模块使用。我认为我们应该在一些Makefile中添加它,但是我应该如何和在哪里添加它呢?我正在使用linux 4.1内核。

错误消息:

代码语言:javascript
复制
lib/lib.a(klist.o): In function `klist_del':
lib/klist.c:230: undefined reference to `__cyg_profile_func_enter'
lib/klist.c:232: undefined reference to `__cyg_profile_func_exit'
lib/lib.a(klist.o): In function `klist_iter_exit':
lib/klist.c:313: undefined reference to `__cyg_profile_func_enter'
lib/klist.c:318: undefined reference to `__cyg_profile_func_exit'
lib/lib.a(klist.o): In function `klist_remove':
lib/klist.c:240: undefined reference to `__cyg_profile_func_enter'
EN

回答 1

Stack Overflow用户

发布于 2017-01-21 16:57:26

我不认为extern类型需要明确地定义它。您只需要下面的实现(假设您已经对Makefile和Kconfig进行了更改):

模组.c

代码语言:javascript
复制
return_type module_function(function_args){
}
EXPORT_SYMBOL(module_function);

模组.h

代码语言:javascript
复制
return_type module_function(function_args);

module.c中添加头文件,例如在module.h中添加module.h,并从要访问module_function的位置添加文件。

还有一件事您也可以尝试使用EXPORT_SYMBOL_GPL而不是EXPORT_SYMBOL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41776778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档