当我收到此错误时,我将一些驱动程序嵌入到
Linux内核中(我在板文件中添加设备并注册它):
error: 'kxtf9_get_slave_descr' undeclared here (not in a function)
struct ext_slave_descr *kxtf9_get_slave_descr(void) { return &kxtf9_descr; } EXPORT_SYMBOL(kxtf9_get_slave_descr);
它不应该由EXPORT_SYMBOL“可见”吗?
包含上面代码的C文件没有头文件(我没有写它,我刚刚发现它here并且我正在实现.他们说它已经过测试所以我假设不需要头文件?
解决方法
EXPORT_SYMBOL导出动态链接的符号.你所拥有的不是链接错误,而是由于缺少函数声明而导致的编译错误.您必须为C文件编写头文件并包含该头文件,或者将该函数声明为您正在编译的C文件.
选项1:
kxtf9.h:
#ifndef KXTF9_H #define KXTF9_H struct ext_slave_descr *kxtf9_get_slave_descr(void); #endif
your_file.c:
#include "kxtf9.h" /* your code where you use the function ... */
选项2:
your_file.c:
struct ext_slave_descr *kxtf9_get_slave_descr(void); /* your code where you use the function ... */
另请注意,文件kxtf9.c中的EXPORT_SYMBOL周围有#ifdef __KERNEL__,因此您必须正确设置构建环境(Makefile) – 否则会出现链接错误.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。