当前位置: 技术问答>linux和unix
linux 静态库链接 找不到函数的问题
来源: 互联网 发布时间:2017-03-24
本文导语: 系统:linux CentOS 64位 语言:c++ 我有一个静态库libc.a,需要依赖libb.a,而libb.a又需要依赖liba.a,所以应用程序链接时我依次-lc.a -lb.a -la.a,但是链接错误说libb.a和liba.a中的函数找不到! 我仔细检查了链接路径,没...
系统: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上编译生成的静态库。
已经折腾很久了,还是没有搞定。大家遇到过这样的问题吗?
谢谢大家~~~~~
语言: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上编译生成的静态库。
已经折腾很久了,还是没有搞定。大家遇到过这样的问题吗?
谢谢大家~~~~~
|
楼主的.a和程序是否都是用的纯C++? 是否有.c的文件
用nm命令看下.a , .o文件的未定义符号与另外的定义符号是否匹配。
可能是楼主混用了c和c++,,而extern "C"这样的使用错误可能导致问题。
用nm命令看下.a , .o文件的未定义符号与另外的定义符号是否匹配。
可能是楼主混用了c和c++,,而extern "C"这样的使用错误可能导致问题。
|
LDFLAGS += -L path of libs.
|
[b]链接错误说libb.a和liba.a中的函数找不到!
我很感觉这个错误没明白这个意思。。是undefined还是undeclation???
我很感觉这个错误没明白这个意思。。是undefined还是undeclation???
|
楼主连接的命令写错了吧!
连接静态库,比如liba.a 命令应该是-la 也就是前面的lib和后面的.a都不需要。动态库比如libb.so 是-lb跟静态库一样,也不需要lib和后面的.so。
但是看楼主写的是-la.a
连接静态库,比如liba.a 命令应该是-la 也就是前面的lib和后面的.a都不需要。动态库比如libb.so 是-lb跟静态库一样,也不需要lib和后面的.so。
但是看楼主写的是-la.a