【问题标题】:libcrypto.so.10: cannot open shared object file: No such file or directorylibcrypto.so.10:无法打开共享对象文件:没有这样的文件或目录
【发布时间】:2014-05-26 13:15:44
【问题描述】:

我正在尝试按照以下说明为 Debian 安装 ODBC 驱动程序:https://blog.afoolishmanifesto.com/posts/install-and-configure-the-ms-odbc-driver-on-debian/

但是试图运行:

sqlcmd -S 本地主机

我得到了错误

libcrypto.so.10:无法打开共享对象文件:没有这样的文件或 目录

可能是什么原因?

到目前为止我已经尝试过

1.
    $ cd /usr/lib 
     $ sudo ln -s libssl.so.0.9.8 libssl.so.10
     $  sudo ln -slibcrypto.so.0.9.8 libcrypto.so.10
2.
/usr/local/lib64 to the /etc/ld.so.conf.d/doubango.conf file

3.
sudo apt-get update
sudo apt-get install libssl1.0.0 libssl-dev

cd /lib/x86_64-linux-gnu
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10

4. Sudo apt-get install libssl0.9.8:i386

这些都没有帮助。

【问题讨论】:

    标签: odbc debian libssl libcrypto


    【解决方案1】:

    由于我对 Debian 和编程非常熟悉,这里有一些建议:

    • 如果您对设置系统有任何疑问,请在SuperUser 和/或(如果您的问题是针对 Un*x 风格)在Unix&Linux 上提问

    • 在处理共享库的符号链接时,您应该彻底了解自己在做什么。这些文件的命名是有原因的 - 原因是为了保护您(系统用户)免受奇怪的崩溃,因为应用程序使用了错误/不兼容的库。

    • 一个告诉你这样做的教程,应该给出适当的警告和解释你要做什么。

    那么,为什么您要遵循教程中的这些说明?

    您尝试运行的应用程序已与libcrypto.so 链接。 在开发人员机器上(用于生成应用程序二进制文件),libcrypto.so 是指向libcrypto.so.10 的符号链接,但在 Debian 上没有:可能是因为该库已被删除(并被新的和 版本不兼容),或者因为 Debian 使用了与用于编译应用程序的系统不同的命名方案。

    如果是前者,则无法使用符号链接解决问题。 您必须获得正确的库(或链接到正确库的应用程序)。

    如果是后者,您可以将预期的库名称与系统上找到的正确库文件进行符号链接。 (这是假设两个系统之间的唯一区别确实是这样的命名方案)。

    那么,该怎么做呢?

    • 首先,您应该找出您的应用程序真正链接到了哪些库,以及缺少哪些库。

        $ ldd /path/to/my/app | grep -i "not found"
        libfoo.so.10 => not found
      
    • 然后找出您的系统上是否有(希望兼容的)库。一个好的起点是/usr/lib/。但不是最近,Debian 已经开始将库移动到 /usr/lib/<host-triplet><host-triplet> 描述了一个目标架构。如果您的应用程序确实是为您正在运行的架构构建的(例如,对于 linux-amd64),您可以找出默认值,您可以通过运行以下命令来获取字符串:

        $ gcc -print-multiarch
      

      假设你发现你有/usr/lib/x86_64-linux-gnu/libfoo.so.1.0.0

    • 如果您有理由相信这可以替代libfoo.so.10,您可以通过以下方式将找到的库提供给您的应用程序符号链接,例如

        # cd /usr/local/lib/
        # ln -s /usr/lib/x86_64-linux-gnu/libfoo.so.1.0.0 libfoo.so.10
      
    • 最后,您可能需要刷新动态链接器的缓存,以便它开始使用新库,方法是以 root/超级用户身份运行 ldconfig

    【讨论】:

      猜你喜欢
      • 2021-02-05
      • 2023-04-02
      • 1970-01-01
      • 2022-11-15
      • 2015-04-12
      • 2018-11-26
      • 2019-11-27
      • 2020-02-06
      • 1970-01-01
      相关资源
      最近更新 更多