我在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)
我的问题是,共享库已经完成了编译和链接。为什么它仍然有未定义的符号,为什么这不会发生在链接阶段?