【发布时间】:2014-06-25 11:01:39
【问题描述】:
我正在尝试调用一个 C 程序,它从配置文件中返回给定关键字的值
在尝试调用程序时显示以下错误:
**Testprintenv: error while loading shared libraries: libodbc.so.1: cannot open shared object file: No such file or directory**
我们之前安装了 EasySoft,然后卸载回来(删除了所有目录)。
以下依赖项显示在 Linux 机器上 **
-bash-4.1$ ldd Testprintenv
linux-vdso.so.1 => (0x00007fffc0bdb000)
libodbc.so.1 => not found
libodbcinst.so.1 => not found
libc.so.6 => /lib64/libc.so.6 (0x000000397b200000)
/lib64/ld-linux-x86-64.so.2 (0x000000397ae00000)
**
当我们在 Solaris 机器上尝试相同的程序时,依赖项会以不同的方式显示并且执行时没有任何错误:
[Testuser]$ ldd Testprintenv
libsocket.so.1 => /lib/libsocket.so.1
libnsl.so.1 => /lib/libnsl.so.1
libc.so.1 => /lib/libc.so.1
libmp.so.2 => /lib/libmp.so.2
libmd.so.1 => /lib/libmd.so.1
libscf.so.1 => /lib/libscf.so.1
libdoor.so.1 => /lib/libdoor.so.1
libuutil.so.1 => /lib/libuutil.so.1
libgen.so.1 => /lib/libgen.so.1
libm.so.2 => /lib/libm.so.2
/platform/SUNW,SPARC-Enterprise/lib/libc_psr.so.1
了解为什么依赖项 (libodbc.so.1) 仅出现在 linux 上以及如何解决?
提前致谢,
【问题讨论】:
-
是 printenv 是 Linux 计算机上唯一出现该错误的程序吗?如果没有,我会查看 $LD_PRELOAD 环境变量。
-
我假设您正在谈论的 printenv 不是标准的 printenv 命令,因为标准的命令没有执行您所描述的操作。你自己编译的吗?它来自哪里?
-
@harmic,printenv 不是标准命令,我在这里发帖时重命名了程序名称..
-
@TimM,$LD_PRELOAD 为空
-
您使用的是什么发行版?你安装 libobdc 包了吗?
标签: c linux shared-libraries solaris dynamic-linking