ldd找不到路径,如何添加

ldd找不到路径,如何添加

我知道这个问题并不是很新,但似乎我自己无法解决我的问题。

ldd生成以下输出

u123@PC-Ubuntu:~$ ldd /home/u123/Programme/TestPr/Debug/TestPr
    linux-vdso.so.1 =>  (0x00007ffcb6d99000)
    libcsfml-window.so.2.2 => not found
    libcsfml-graphics.so.2.2 => not found
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcebb2ed000)
    /lib64/ld-linux-x86-64.so.2 (0x0000560c48984000)

哪一个是告诉ld正确路径的正确方法?

答案1

如果您的库不在标准路径上,那么您需要将它们添加到路径或将非标准路径添加到 LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<Your_non-Standard_path>

完成上述任何一项操作后,您需要通过执行以下命令来更新动态链接器运行时绑定:

sudo ldconfig

更新:

您可以通过将上述export行写入启动文件之一(例如 ~/.bashrc)来使更改永久生效或者如果底层库不与任何其他库冲突,则放入标准库路径之一(例如/lib、/usr/lib)

答案2

LD_LIBRARY_PATH适合短期测试,但由于只有一个多变的,当您可能有多个带有自定义库的应用程序时,使用起来很尴尬。

Debian/Ubuntu 的常用方法是将其添加到加载器的配置中,例如,在

/etc/ld.so.conf.d

包含您希望加载程序在其中搜索的目录,例如,

/usr/local/libcsfml

进一步阅读:

答案3

这看起来好像有问题的二进制文件是由您编译的。

所以有些库找不到的问题由你负责。

如果这些库在您的系统上可用,它们似乎位于非标准目录位置。

用于-R directory最终编译器调用以告诉链接器directory库所在的位置。不止一个-R directory选项是可能的。

请注意,当您使用时gcc,您可能需要使用-Wl,-R而不是-R

相关内容