【发布时间】:2018-11-02 17:20:59
【问题描述】:
有一个针对 -lyaml 编译的库。但是 libyaml.so 没有被 ldd 列为依赖项。使用 autoconf 工具链成功构建。
$ nm libxxxx.so | grep -i yaml
U yaml_document_delete
U yaml_document_get_node
U yaml_parser_delete
U yaml_parser_initialize
U yaml_parser_load
U yaml_parser_set_input_file
$ readelf -d libxxxx.so
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000e (SONAME) Library soname: [libxxxx.so.0]
还有另一个依赖于 libxxxx.so 的共享库。
$ ldd lib/libxxxx1.so
libzmq.so.5 => /usr/lib/x86_64-linux-gnu/libzmq.so.5 (0x00007fd45e072000)
libxmaapi.so.0 =>
当我将我的可执行文件与 libxxxx1.so 链接时,它给出了未定义的符号错误。问题是如何链接依赖树中未找到的库?
此问题提供了忽略该问题的方法。 Linking with dynamic library with dependencies
【问题讨论】:
-
您是否已将您的 libyaml 位置添加到
LD_LIBRARY_PATH? -
我不喜欢人们来,问不完整的问题,然后离开......
-
链接出错的方式有很多。无法重现,我们只能猜测。
-
@YSC 是的,我已经添加了。
标签: c++ c makefile shared-libraries gnu