如何在linux中设置环境变量LD_LIBRARY_PATH

sin*_*gha 183 linux environment-variables

我先执行了命令: export LD_LIBRARY_PATH=/usr/local/lib

然后我打开了.bash_profile文件:vi ~/.bash_profile.在这个文件中,我把:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

然后,如果终端关闭并重新启动,则键入不echo $LD_LIBRARY_PATH显示结果.

如何永久设置路径?

use*_*407 185

您应该添加有关您的发行版的更多详细信息,例如在Ubuntu下,正确的方法是添加自定义.conf文件/etc/ld.so.conf.d,例如

sudo gedit /etc/ld.so.conf.d/randomLibs.conf
Run Code Online (Sandbox Code Playgroud)

在文件内部,您应该编写包含您希望添加到系统的所有库的目录的完整路径,例如

/home/linux/myLocalLibs
Run Code Online (Sandbox Code Playgroud)

记得只添加dir的路径,而不是文件的完整路径,该路径中的所有lib都将自动编入索引.

保存并运行sudo ldconfig以使用此库更新系统.

  • 这真的是正确的方法吗?假设您有多个用户构建本地库,并且已将它们都添加到/etc/ld.so.conf.d中.现在用户A可以链接到用户B的本地库.不好. (9认同)
  • `/usr/local/lib` 通常已经存在,所以不需要编辑任何文件,只需 `sudo ldconfig`。 (2认同)
  • 这是解决此问题的救星:尝试导入 psycopg2 时,SageMaker 中出现“'ImportError:libpq.so.5:无法打开共享对象文件:没有这样的文件或目录”错误。使用以下命令找到路径:`$ find ~/ -name libpq.so.5` 然后使用 @user1824407 建议:`sudo vim /etc/ld.so.conf.d/pyscopg.conf` 后跟 libpg.so 的 SageMaker 位置.5: `/home/ec2-user/anaconda3/envs/JupyterSystemEnv/lib/` 然后运行 ​​sudo ldconfig。魔法。 (2认同)
  • 这对我不起作用,因为之后,即使重新启动后,`echo $LD_LIBRARY_PATH` 也是空的......(Ubuntu 20.04) (2认同)

Ari*_*aco 76

保留上一个路径,不要覆盖它:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/
Run Code Online (Sandbox Code Playgroud)

你可以把它添加到〜/ .bashrc:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)


MrU*_*ser 34

LD_LIBRARY_PATH = "/路径/你/ want1:/路径/你/想/ 2"

/etc/environment

请参阅Ubuntu文档.

更正:我应该采取自己的建议并实际阅读文档.它说这不适用于LD_LIBRARY_PATH:由于Ubuntu 9.04 Jaunty Jackalope,LD_LIBRARY_PATH不能在$ HOME/.profile,/ etc/profile或/ etc/environment文件中设置.你必须使用/etc/ld.so.conf.d/.conf配置文件.*所以user1824407的答案是现货.

  • 花了4个小时试图找出为什么我可以设置PATH和PKG_CONFIG_PATH,但不是LD_LIBRARY_PATH.我甚至不能. (7认同)
  • Ubuntu是一个特例.Ubuntu的观点是所有用户都想要相同的库,并且每个库只有一个位置(在Launchpad bug#366728中阅读讨论).但是,在多用户研究或开发系统上,您希望每个用户都能拥有自己的库版本.大多数Linux发行版允许这样做并且已经这么做了很多年. (3认同)

Som*_*ude 20

该文件.bash_profile仅由登录shell执行.您可能需要将其放入~/.bashrc,或者只需注销并再次登录.


nbr*_*ing 15

出于某种原因,没有人提到过bashrc需要在编辑后重新获得的事实.您可以注销并重新登录(如上所述),但您也可以使用命令:source ~/.bashrc. ~/.bashrc.


小智 15

或者,您可以使用指定的库目录执行程序:

/lib/ld-linux.so.2 --library-path PATH EXECUTABLE
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多.

  • 也帮助了我 (3认同)
  • 是的,我同意 spt025 - 我从来不知道这个技巧是可能的。我觉得在一些过时的联机帮助页中最多隐藏了很多信息……所以 StackOverflow 对于这种特定类型的信息确实很有帮助。 (2认同)

Ans*_*hul 14

export LD_LIBRARY_PATH=/usr/local/lib~/.bashrc[优选地朝向脚本的端,以避免两者之间的任何替代,预设~/.bashrc带有许多if-else语句]

发布时,无论何时打开新的终端/ konsole,LD_LIBRARY_PATH都会被反映出来


sin*_*ngh 7

  1. 转到主文件夹并编辑.profile
  2. 将以下行放在最后

    export LD_LIBRARY_PATH=<your path>

  3. 保存并退出.

  4. 执行此命令

    sudo ldconfig


Met*_*rmu 5

您可以尝试添加自定义脚本,例如 myenv_vars.sh/etc/profile.d.

cd /etc/profile.d
sudo touch myenv_vars.sh
sudo gedit myenv_vars.sh
Run Code Online (Sandbox Code Playgroud)

将其添加到空文件中并保存。

export LD_LIBRARY_PATH=/usr/local/lib
Run Code Online (Sandbox Code Playgroud)

注销和登录LD_LIBRARY_PATH将被永久设置。