Chinaunix

标题: 程序运行的时候出现“undefined symbol”错误 [打印本页]

作者: jnjn999    时间: 2011-01-10 14:59
标题: 程序运行的时候出现“undefined symbol”错误
这个函数是个extern的;
makefile里面已经把该函数的原型的库(.a)加进来了的


为什么运行的时候就出未定义的错误?
作者: rain_fish    时间: 2011-01-10 15:01
这个函数是个extern的;
makefile里面已经把该函数的原型的库(.a)加进来了的


为什么运行的时候就出 ...
jnjn999 发表于 2011-01-10 14:59



    运行还是编译时?
作者: jnjn999    时间: 2011-01-10 15:22
运行还是编译时?
rain_fish 发表于 2011-01-10 15:01



    运行啊,编译成功的,所以很好奇
作者: rain_fish    时间: 2011-01-10 15:26
是不是编译成动态库了?
作者: rain_fish    时间: 2011-01-10 15:26
回复 3# jnjn999


    是不是编译成动态库了?
作者: jnjn999    时间: 2011-01-10 15:33
回复  jnjn999


    是不是编译成动态库了?
rain_fish 发表于 2011-01-10 15:26



    恩,目标文件是个so文件
作者: rain_fish    时间: 2011-01-10 15:37
将so所在路径放入PATH中,或者将so放到系统lib库目录下,比如/usr/local/lib
作者: rain_fish    时间: 2011-01-10 15:38
恩,目标文件是个so文件
jnjn999 发表于 2011-01-10 15:33



    将so所在路径放入PATH中,或者将so放到系统lib库目录下,比如/usr/local/lib
作者: jnjn999    时间: 2011-01-10 15:42
将so所在路径放入PATH中,或者将so放到系统lib库目录下,比如/usr/local/lib
rain_fish 发表于 2011-01-10 15:38



   是这样的,我现在要生成一个A.so库,这个库被一个框架执行;


   A.so库的源代码里面有个B函数,是个extern的; 在A的makefile里面,我已经包含了B函数所在的库(一个.a的库),编译成功,执行A.so库的时候出错:

failed to open module.  got error: A.so: undefined symbol: B
作者: jnjn999    时间: 2011-01-10 16:54

作者: robin10    时间: 2011-01-11 00:24
.a 在编译库.so的时候应该没导入的吧。。
你在编译框架的时候,是否也指明了.a了呢?
以前有遇到类似问题。不太记得了
作者: wxfjx    时间: 2011-01-11 10:28
你把A.so编译成A.a,看看还有没有此类的问题
作者: wb112200    时间: 2011-01-11 10:39
是不是需要运行时库啊 看看你包含的那个.a 有没有运行时库
作者: Mr_Yao    时间: 2011-01-11 11:09
你nm 下.a,看看里面到底有没有?!

还有一个就是路径问题,是不是没找到这个库?!
作者: rain_fish    时间: 2011-01-11 13:40
lz解决没有?
作者: pgt112you    时间: 2012-06-01 16:59
和楼主同问
作者: walleeee    时间: 2012-06-01 17:09
.a怎么和动态库搞上关系了。
作者: _illusion    时间: 2014-01-12 16:55
我估计是因为没有生效的原因,使用 sudo ldconfig 试下吧。
作者: kdkgod    时间: 2014-01-12 16:56
有声明,没定义。
作者: w_anthony    时间: 2014-01-13 10:52
如果排除那些低级错误,那我觉得很可能是.a文件中没有在.so中用到的函数就没有链接进来,用-Wl,--whole-archive指定把整个.a链接进来,格式如下:
-Wl,--whole-archive -lyourliba -Wl,--no-whole-archive

作者: mci2004    时间: 2014-01-13 15:04
如果是用C++的写的代码,提醒lz注意下 namespace 的问题
作者: mci2004    时间: 2014-01-13 15:08
sorry 看贴不认真,如果是运行错误就忽略我上面的回答。
作者: frogeton    时间: 2014-03-04 10:54
LZ问题解决了么?俺这跟您的问题如出一辙。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2