问题描述
我想向默认的vxworks Ball DKM项目添加功能。我已经复制了我可以从给定的头文件调用的所有函数所看到的样式,并在master/vxworks-6.9/target/h/wrn/coreip/netBufLib.h
中声明了自己的样式:
EXTERN void hello(void); //also tried EXTERN void hello();
然后我将主体添加到唯一具有相同名称(master/components/ip_net2-6.9/vxmux/src/mem/netBufLib.c
)的源文件中
void hello() {
printf("hello,world from netbuflib.c!");
}
在项目构建时,我得到警告:
在目标vxsim2_0上下载模块'/ball/SIMLINUXdiab/ball/Debug/ball.out'时,模块符号无法完全解析
未解析的符号列表:你好
您是否要继续启动并忽略...
如果我继续进行操作,自然会在我致电hello()
时发生段隔离冲突。
由于Eclipse / VXWorks,除了清理项目并重新构建项目之外,是否还有链接步骤或要做的事情?还是与使用SIMLINUX或目标vxsim模拟器有关?最后,我想这可能是源文件不是正确的对应源代码,即使它是该目录中唯一相同的命名文件(VXWorks存储库只能随编译程序集一起提供)?
解决方法
由于您试图在DKM中定义函数hello()
,因此应在与DKM项目相关的某些源文件中(而不是在核心库中)添加定义,并将声明添加到您所在的源文件中调用hello
,然后重建并运行它。
或者,如果您想将功能添加到核心库中(如已完成),则必须重建该库并将功能的声明添加到调用hello
的文件中。