gpt4 book ai didi

c++ - 链接共享库依赖项未在 ldd 中列出

转载 作者:行者123 更新时间:2023-11-28 04:39:43 27 4
gpt4 key购买 nike

有针对-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 链接时,出现 undefined symbol 错误。问题是如何链接依赖树中未找到的库?

这个问题提供了忽略这个问题的方法。 Linking with dynamic library with dependencies

最佳答案

我发现的一种方法是使用 gcc 标志 -Wl,--no-as-needed 禁用优化。由于我已经使用 -lyaml 进行链接,因此符号正在得到解析。它有效但效率不高。

关于c++ - 链接共享库依赖项未在 ldd 中列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50493108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com