我自己编译了一个shared library, 叫libhaa.so, 里边所有的依赖都是源码整合进来编译的
编译也ok了, ldd看了一下, 只依赖几个常用的so
然后编译bb(普通app), 链接libaa.so的时候, 居然说libaa里边有找不到的函数
:-1: error: /home/mz-active/build/qtpro/../../..//lu_rc/linux64/bind/libhaa.so: undefined reference to `LZ4_compress_fast'
这就奇怪了, 1 首先是不缺, lz4已经源码整合了。
2 就算是缺, 为什么不是编译libaa的时候就报错? 要等到别人链接libaa的时候才报错?
大家有碰到类似问题的吗?
已经搞定, 说一下结果=============================================
原因是用了lz4.c和lz4hc.c lz4hc.c居然直接include了lz4.c(为了强制内联), 所以qmake解析的时候, 没有为lz4.c生成lz4.o. 问题是工程里边还有bb.c 和 hh.hpp中都引用了lz4.h, 他们没有链接到lz4的函数实现上.
最后在bb.c中直接inlude lz4.c(和lz4hc一样), 在hh.hpp中引用lz4的头文件, 居然成功了.
hh.hpp中用到了lz4函数, 应该是在bb.c中, 至于lz4hc, 不知道用了什么魔法, 将lz4.c包含后, 消化得无影无踪了。
原因后续再找. lz4 的文档好像是说,只支持静态链接,反正挺奇怪的一个思路。
--
修改:xieyf FROM 120.244.224.*
FROM 120.244.224.*