日期:2014-05-16  浏览次数:20937 次

linux 静态库链接 找不到函数的问题
系统:linux CentOS 64位
语言:c++

我有一个静态库libc.a,需要依赖libb.a,而libb.a又需要依赖liba.a,所以应用程序链接时我依次-lc.a -lb.a -la.a,但是链接错误说libb.a和liba.a中的函数找不到
我仔细检查了链接路径,没有问题的,如果我把libb.a和liba.a删掉,会报找不到库文件的错误,证明链接的文件也的确是这两个文件,
我nm过,看到两个库导出的函数也的确是存在的,但就是链接不过!

libc.a是自己写的代码库,而libb.a和liba.a是很成熟的开源代码,我自己在linux上编译生成的静态库。

已经折腾很久了,还是没有搞定。大家遇到过这样的问题吗?
谢谢大家~~~~~
------解决方案--------------------
LDFLAGS += -L path of libs.
------解决方案--------------------
[b]链接错误说libb.a和liba.a中的函数找不到!

我很感觉这个错误没明白这个意思。。是undefined还是undeclation???
------解决方案--------------------
楼主连接的命令写错了吧!

连接静态库,比如liba.a 命令应该是-la 也就是前面的lib和后面的.a都不需要。动态库比如libb.so 是-lb跟静态库一样,也不需要lib和后面的.so。 

但是看楼主写的是-la.a 
------解决方案--------------------
楼主的.a和程序是否都是用的纯C++?  是否有.c的文件
用nm命令看下.a , .o文件的未定义符号与另外的定义符号是否匹配。
可能是楼主混用了c和c++,,而extern "C"这样的使用错误可能导致问题。