继上一个问题Using system symbol table from VxWorks RTP之后。
我正在将现有的 vxworks 内核模块移植到 RTP,但是,许多实际功能仍嵌入在其他“可下载”内核模块中。这些是使用 loadModule 加载的(作为启动过程的一部分),因此应该在我的 RTP 运行时的系统符号表中。]
但是,我无法构建我的 RTP,从链接器获取有关未定义引用的错误。
如何说服链接器忽略对这些函数的引用?我将-Xbind-lazy -non-static
选项传递给链接器。
例如,内核模块(构建为 database.out)可能包含如下代码
void writeDatabaseValue(int , char*);
我的 RTP 应用程序代码以通常的方式调用它
void main (int)
{
//do some stuff
writeDatabaseValue(0,"foo"); //Linker error here
taskDelay(100); //but no linker error here
}
我尝试database.out
使用 将引用添加到链接行-l:database.out
,这解决了对 writeDatabaseValue 的引用,但是然后我进入了依赖地狱,因为链接器然后尝试解析所有database.out
s 引用,包括所有标准的 vxworks api 调用。
编辑:只是为了增加复杂性,我想调用的一些内核模块代码位于实际产生我的 RTP 的同一模块中......