EXPORT_SYMBOL问题

liuzhengao 2008-10-17 10:56:36
现在要编译两个文件A.o与B.o到内核中,其中A.o定义了一个函数func,并且使用EXPORT_SYMBOL标明;B.o是一个驱动文件,需要调用A.o中的func函数。
头文件header.h中用声明了函数func,B.o包含了头文件header.h。
但是在编译内核的时候,报错,说func的定义有问题,是什么原因呢?
...全文
351 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
unbutun 2008-10-24
  • 打赏
  • 举报
回复
除了输出符号的那个文件,所有其他声明的地方都要用extern
liuzhengao 2008-10-21
  • 打赏
  • 举报
回复
extern加在头文件吗?我试过了
加在驱动文件里,还会有错误
unbutun 2008-10-21
  • 打赏
  • 举报
回复
加extern试试
liuzhengao 2008-10-20
  • 打赏
  • 举报
回复
路径?这个有问题吗?
(1)/linux2.6.25/include/asm/arch-omap2/power_companion.h
(2)/linux2.6.25/arch/arm/match-omap2/power_companion.c
1inux2.6.25前面的就不用写了吧
快乐田伯光 2008-10-20
  • 打赏
  • 举报
回复
相对目录对吗?
liuzhengao 2008-10-20
  • 打赏
  • 举报
回复
错误是:undefined reference to `sdp2430_vaux2_ldo_use'
liuzhengao 2008-10-20
  • 打赏
  • 举报
回复
我是把montavista linux中的TI的OMAP处理器的一个LCD驱动移植到2.6.25的新内核中,LCD的主驱动文件omapfb_main.c需要调用arch/arm/match-omap2/power_companion.c下的函数int sdp2430_vaux2_ldo_use(void),而这个文件power_companion.c在新的2.6.25内核中是不存在的。所以我需要将这个文件移到新的2.6.25内核中来,供驱动文件driver/video/omap/omapfb_main.c来调用!

大体写一下我的设计:
(1)asm/arch-omap2/power_companion.h中声明函数:
int sdp2430_vaux2_ldo_use(void);
(2)arch/arm/match-omap2/power_companion.c文件中定义函数:
int sdp2430_vaux2_ldo_use(void)
{
......;
}
EXPORT_SYMBOL(sdp2430_vaux2_ldo_use);

(3)driver/video/omap/omapfb_main.c调用函数sdp2430_vaux2_ldo_use():
#include <asm/arch-omap2/power_companion.h>
sdp2430_vaux2_ldo_use();


这样在编译内核的时候,会报错误!


genghb 2008-10-18
  • 打赏
  • 举报
回复
应该是B没找到func定义或func调用的参数不太对
once_and_again 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liuzhengao 的回复:]
我在公司编译的,现在手头没有源码,好像是函数func的定义implicit......
[/Quote]头文件中没有声明?
joyself 2008-10-17
  • 打赏
  • 举报
回复
是warning还是error?

是warning的话,加extern试试
liuzhengao 2008-10-17
  • 打赏
  • 举报
回复
错误行出现在B.c调用func函数处
liuzhengao 2008-10-17
  • 打赏
  • 举报
回复
我在公司编译的,现在手头没有源码,好像是函数func的定义implicit......
joyself 2008-10-17
  • 打赏
  • 举报
回复
至少说一下什么错误吧

4,437

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧