当前位置: 代码迷 >> VxWorks >> VxWorks loadModule报Undefined Symbol解决方法
  详细解决方案

VxWorks loadModule报Undefined Symbol解决方法

热度:717   发布时间:2016-04-28 11:25:05.0
VxWorks loadModule报Undefined Symbol
Hi 大家好,


最近在做一个项目,目标板在运行的时候需要加载一个模块,并初始化,在加载模块的时候,loadModule报错
Undefined symbol: __divdi3 (binding 1 type 0)
Undefined symbol: __floatdidf (binding 1 type 0)
Undefined symbol: recv (binding 1 type 0)
Undefined symbol: connect (binding 1 type 0)
Undefined symbol: taskSpawn (binding 1 type 0)
Undefined symbol: __gtdf2 (binding 1 type 0)
Undefined symbol: __floatsidf (binding 1 type 0)
Undefined symbol: __ltdf2 (binding 1 type 0)
Undefined symbol: recvfrom (binding 1 type 0)
Undefined symbol: socket (binding 1 type 0)
Undefined symbol: __adddf3 (binding 1 type 0)
Undefined symbol: __umoddi3 (binding 1 type 0)
Undefined symbol: __udivdi3 (binding 1 type 0)
Undefined symbol: send (binding 1 type 0)
Undefined symbol: accept (binding 1 type 0)
Undefined symbol: __fixdfsi (binding 1 type 0)
Undefined symbol: taskDelay (binding 1 type 0)
Undefined symbol: bind (binding 1 type 0)
Undefined symbol: inet_addr (binding 1 type 0)
Undefined symbol: setsockopt (binding 1 type 0)
Undefined symbol: sendto (binding 1 type 0)
Undefined symbol: __negdf2 (binding 1 type 0)
Undefined symbol: listen (binding 1 type 0)
Undefined symbol: __divdf3 (binding 1 type 0)
Undefined symbol: __muldf3 (binding 1 type 0)
Undefined symbol: taskIdSelf (binding 1 type 0)
Undefined symbol: shutdown (binding 1 type 0)
Undefined symbol: gethostname (binding 1 type 0)
Undefined symbol: __fixdfdi (binding 1 type 0)
Undefined symbol: getpeername (binding 1 type 0)
Undefined symbol: getsockopt (binding 1 type 0)
Undefined symbol: __gedf2 (binding 1 type 0)
Undefined symbol: __subdf3 (binding 1 type 0)
Undefined symbol: soo_ioctl (binding 1 type 0)
Undefined symbol: tickGet (binding 1 type 0)
Undefined symbol: getsockname (binding 1 type 0)

这些符号包含在系统里运行的,新加的module会调用这些符号
这些符号表在主机的静态符号表里都能查到,而且也可以使用对应的地址在target shell上执行。但是在target shell里使用symFindByName从sysSymTbl却查不到,返回-1。整个库包含的符号都找不到,比如tickGet相关的库的符号,都返回-1.

起初我以为是加载模块后符号表被修改了导致找不到,但是我在加载模块之前查找,一样也找不到。说明这些符号并没有被加进去。问题来了,符号表加载是如何进行的?是否会选择性的添加符号?

谢谢!
------解决思路----------------------
调用symFindByName返回-1后,紧接着调用一下errnoGet看看系统错误码是多少。
  相关解决方案