导出多个 LD_LIBRARY_PATH 的正确方法

Sef*_*ter 1 linux shell ubuntu-18.04

我是使用 linux 的新手。根据有关我的项目的指南,我必须多次导出 LD_LIBRARY_PATH,我不确定是否没有覆盖它们。

#Cupti + Tensorflow_CUDAit
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64

#Mujoco
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/robolab/.mujoco/mujoco200/bin
export MUJOCO_PY_MJPRO_PATH=$HOME/.mujoco/mujoco200/
export MUJOCO_PY_MJKEY_PATH=$HOME/.mujoco/mjkey.txt

#Mujoco_py
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so
Run Code Online (Sandbox Code Playgroud)

这是正确的方法还是我覆盖它们?如果是这样,正确的方法是什么?

先感谢您。

Dar*_*ith 5

您的方法应该有效,即您正在向 LD_LIBRARY_PATH 添加多个路径(而不是覆盖),但是有两个陷阱需要注意。

(1) 更喜欢引用 LD_LIBRARY_PATH 如下:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":/home/robolab/.mujoco/mujoco200/bin
Run Code Online (Sandbox Code Playgroud)

...以便 LD_LIBRARY_PATH 中的嵌入空间不会导致问题。

(2)考虑将路径放在一起的顺序,例如,您可以替代地执行

export LD_LIBRARY_PATH=/home/robolab/.mujoco/mujoco200/bin:"$LD_LIBRARY_PATH"
Run Code Online (Sandbox Code Playgroud)

如果您尝试两种方法,然后echo $LD_LIBRARY_PATH您会看到它改变了路径的顺序,如果您在多个位置拥有相同的库,这可能很重要。