libcrypto.so.10:无法打开共享对象文件:没有这样的文件或目录
Posted
技术标签:
【中文标题】libcrypto.so.10:无法打开共享对象文件:没有这样的文件或目录【英文标题】:libcrypto.so.10: cannot open shared object file: No such file or directory 【发布时间】: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
这些都没有帮助。
【问题讨论】:
【参考方案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
。
【讨论】:
以上是关于libcrypto.so.10:无法打开共享对象文件:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
centos中缺少libcrypto.so.10 和 libssl.so.10?
centos中缺少libcrypto.so.10 和 libssl.so.10?
symbol X509_get_signature_nid, version libcrypto.so.10 not defined
Linux CentOS YUM错误包需要 - libcrypto.so.10(OPENSSL_1.0.1_EC)(64位)