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

时间:2014-05-26 13:15:45

标签: odbc debian libssl libcrypto

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

然而试图跑:

  

sqlcmd -S localhost

我收到错误

  

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

这些都没有帮助。

1 个答案:

答案 0 :(得分:5)

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

  • 如果您对设置系统有疑问,请在SuperUser上询问{/ 3}}和/或(如果您的问题特定于Un * x风格)<{3}}

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

  • 告诉您这样做的教程应该给出适当的警告和解释。

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

您尝试投放的应用已与libcrypto.so相关联。 在开发人员机器中,libcrypto.solibcrypto.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/lib/x86_64-linux-gnu
    # ln -s libfoo.so.1.0.0 libfoo.so.10