【发布时间】:2016-10-16 12:00:51
【问题描述】:
我在 linux 中编译了一个共享库。生成库后。我执行ldd -r libfoo.so。它带有未定义符号错误
我的错误信息如下
ldd -r libcaffe.so
linux-vdso.so.1 => (0x00007fffdd541000)
/opt/alisentry/$LIB/alisentry_connect.so =>
/opt/alisentry/lib64/alisentry_connect.so (0x00007ff8777bc000)
/opt/alisentry/$LIB/alisentry_exec.so =>
/opt/alisentry/lib64/alisentry_exec.so (0x00007ff8775b8000)
/opt/alisentry/$LIB/alisentry_kill.so =>
...
libc.so.6 => /lib64/libc.so.6 (0x00007ff876291000)
/lib64/ld-linux-x86-64.so.2 (0x0000003671800000)
undefined symbol:
_ZN2cv12mulSpectrumsERKNS_11_InputArrayES2_RKNS_12_OutputArrayEi
(./libcaffe.so)
undefined symbol: _ZN2cv17getOptimalDFTSizeEi (./libcaffe.so)
undefined symbol: _ZN2cv3dftERKNS_11_InputArrayERKNS_12_OutputArrayEii (./libcaffe.so)
我的问题是共享库已经完成编译和链接。为什么它仍然有未定义的符号,为什么它没有发生在链接阶段
【问题讨论】:
-
因为,它可能需要链接另一个库作为先决条件。
-
如果它需要另一个库。我认为它应该在编译时产生错误
标签: linux gcc g++ shared-libraries