我正在尝试根据这些说明为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
这些都没有帮助。
答案 0 :(得分:5)
由于我对Debian和编程非常熟悉,这里有一些建议:
如果您对设置系统有疑问,请在SuperUser上询问{/ 3}}和/或(如果您的问题特定于Un * x风格)<{3}}
< / LI>当使用符号链接到共享库时,您应该彻底了解自己在做什么。这些文件的名称是有原因的 - 原因是为了保护您(系统用户)免受奇怪的崩溃,因为应用程序使用了错误/不兼容的库。
告诉您这样做的教程应该给出适当的警告和解释。
您尝试投放的应用已与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/lib/x86_64-linux-gnu
# ln -s libfoo.so.1.0.0 libfoo.so.10