在linux环境中,无意中将不兼容的nvml库添加到库路径中。在这个设置中,当我试图查询nvidia-smi时,它会给出以下错误
Failed to initialize NVML: Driver/library version mismatch
当我将不兼容的库从库路径中移除并再次查询nvidia-smi时,查询成功运行,输出将按预期显示。
然而,当我通过输入ldd for nvidia-smi来查看依赖库时,它并没有显示这个过程依赖于nvml库。
$>ldd /usr/bin/nvidia-smi
linux-vdso.so.1 => (0x00007fffa84db000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f58ba044000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f58b9e3f000)
libc.so.6 => /lib64/libc.so.6 (0x00007f58b9a7e000)
librt.so.1 => /lib64/librt.so.1 (0x00007f58b9876000)
/lib64/ld-linux-x86-64.so.2 (0x00007f58ba27d000)如果它不依赖于nvml库,那么当存在一个不兼容的nvml库时,为什么会给出一个错误呢?
发布于 2018-02-19 16:21:09
ldd提供了动态链接到应用程序的库上的应用程序依赖项列表。
该应用程序可能使用(共享)库的运行时加载 (例如,strace nvidia-smi 2>&1 |grep ml)。
在运行时加载库时,不必显式地将应用程序与库链接,库将不会显示为ldd输出中的依赖项(如果在应用程序构建时没有显式链接)。
https://stackoverflow.com/questions/48863181
复制相似问题