在LINUX上一个变态的C++编译提示"undefined reference to"的问题

 上次编译的时候遇到一个undefined reference to的问题,提示某个类上的静态函数A无法找到,

具体情况如下

     1)当前类下的所有静态函数都找不到

     2)但是同一个库中的其他类的静态函数都找得到

     3)比较过几个库的头文件或则引用都没啥问题

     4)A函数是在C库中引用的,当前执行程序B引用了C库的某个方法,调用到了A。直接编译的时候提示找不到A函数。但是如果直接在B执行程序中直接调用A函数,则加了这个调用就能编译过了

 

 后来通过分析得到,可能不是代码的问题,而是连接器连接的时候未能找到当前库下的函数,

  处理方法:在引用库的时候将现有引用库多循环几次,重复引用,编译就能通过了。

 

备注:AIX上没有这个问题,HP-UNIX和LINUX上都存在当前问题

 

 具体原理分析:待查找资料

 其他解决方法:有同事提示可以更改gcc 参数能解决这个问题。这个还有待查询资料。

 

posted on 2011-05-24 13:10  KYLIX  阅读(1729)  评论(0编辑  收藏  举报