gpt4 book ai didi

c++ - 在 C++ 应用程序中链接到错误的库版本

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:25 26 4
gpt4 key购买 nike

我正在对 RHEL/CentOS 5 上的 C++ 二进制文件进行故障排除,该二进制文件存在 openssl 共享库问题。我不做太多 C/C++ 编程,而且我很难找到根本问题。

问题似乎在于应用程序链接到特定版本的 libcrypto 和 libssl (0.9.8),而不是 /lib/libcrypto.so.6/lib/libssl.so.6 的符号链接(symbolic link)路径。由于 openssl 库自编译以来已更新,因此现在已损坏。

ldd 显示二进制文件存在以下 2 个问题:

libcrypto.so.0.9.8 => not found
libssl.so.0.9.8 => not found

[编辑]我获得了源代码,并且它构建正确。我将不得不采用最简单的解释,构建机器错误配置了非标准库,并且 makefile 很好。

最佳答案

一些建议(我假设您无法获得链接到新版本 ssl 库的新二进制文件):

  1. 从以前版本的软件包中获取旧版本的库,并将它们保留在您的二进制文件中(您可以将它们放在/usr/lib 之外的某个位置,然后使用 LD_LIBRARY_PATH 为您的程序加载它们)。

  2. 使用 LD_PRELOAD 强制加载新版本的库,并希望二进制文件所需的所有符号都存在并且二进制文件实际运行。虽然这种方法成功的机会很小,但值得一试。

关于c++ - 在 C++ 应用程序中链接到错误的库版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3891692/

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