C-J*_*Jay 14 linux debugging path linker ld
我知道这个问题不是很新,但似乎我无法解决我自己的问题。
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)
Run Code Online (Sandbox Code Playgroud)
哪个是告诉ld正确路径的正确方法?
SHW*_*SHW 17
如果您的库不在标准路径上,那么您需要将它们添加到路径或将非标准路径添加到 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<Your_non-Standard_path>
Run Code Online (Sandbox Code Playgroud)
完成上述任何一项操作后,您需要通过执行以下命令来更新动态链接器运行时绑定:
sudo ldconfig
Run Code Online (Sandbox Code Playgroud)
更新:
您可以通过将上述export行写入其中一个启动文件(例如 ~/.bashrc),或者如果底层库与任何其他库不冲突,然后将其放入标准库路径之一(例如 /lib、 /usr/lib)
Tho*_*key 15
LD_LIBRARY_PATH适用于短期测试,但由于只有一个变量,当您可能有多个带有自定义库的应用程序时,使用起来很尴尬。
Debian/Ubuntu 通常的方法是将它添加到加载程序的配置中,例如,在
/etc/ld.so.conf.d
Run Code Online (Sandbox Code Playgroud)
包含您希望加载程序搜索的目录,例如,
/usr/local/libcsfml
Run Code Online (Sandbox Code Playgroud)
进一步阅读: