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


212

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

然后我打开了.bash_profile文件:vi ~/.bash_profile。在此文件中,我输入:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

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

如何永久设置路径?


9
在此处指出明显的问题...如果您只想修复所做的操作,则添加一个$,例如export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
Cookie

11
刚刚运行sudo ldconfig
Necktwi

这可能很愚蠢,但是对吗$ source ~/.bash_profile?我倾向于忘记这一点。然后像@neckTwi所说的那样运行ldconfig
ashley

Answers:


208

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

sudo gedit /etc/ld.so.conf.d/randomLibs.conf

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

/home/linux/myLocalLibs

请记住,仅将路径添加到目录,而不是文件的完整路径,该路径内的所有库都将被自动索引。

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


很抱歉没有提及发布。它的Fedora 16
singha 2012年

您可以将这种解决方案用于Fedora,这是Joachim Pileborg建议的解决方案,如果您决定将此libs的视图限制为1个特定用户,则很有用,如果您希望系统范围的lib tou应该使用我的解决方案。这完全取决于您要寻找的东西。
user1824407

11
这真的是正确的方法吗?假设您有多个用户在构建本地库,并且已将它们都添加到/etc/ld.so.conf.d中。现在,用户A可以链接到用户B的本地库。不好。
ergosys

/usr/local/lib通常已经存在,因此无需编辑任何文件sudo ldconfig
nyuszika7h 2014年

1
奇怪,它对你们所有人都有效,但是对我却不起作用,尽管这种export LD_LIBRARY_PATH ....方式可行!
会计师

105

保留前面的路径,不要覆盖它:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/

您可以将其添加到〜/ .bashrc中:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc

36

LD_LIBRARY_PATH =“ / path / you / want1:/ path / you / want / 2”

/etc/environment

请参阅Ubuntu文档

更正:我应该听取自己的建议,并实际阅读文档。它说这不适用于LD_LIBRARY_PATH:由于Ubuntu 9.04 Jaunty Jackalope不能在$ HOME / .profile,/ etc / profile或/ etc / environment文件中设置LD_LIBRARY_PATH。您必须使用/etc/ld.so.conf.d/ .conf配置文件。*因此,user1824407的答案很明确。


哇,我看了几次,却忽略了这一点。感谢您发现并引起我们注意。
Michael Scheper 2015年

4
Ubuntu在这里是一个特例。Ubuntu的观点是所有用户都希望使用相同的库,并且每个库只有一个位置(请参阅Launchpad Bug#366728中的讨论)。但是,在多用户研究或开发系统上,您希望每个用户都能够拥有自己的版本的库。大多数Linux发行版都允许这样做,并且已经这样做了很多年。
Joachim Wagner

9
花了4个小时试图弄清楚为什么我可以设置PATH和PKG_CONFIG_PATH,但不能设置LD_LIBRARY_PATH。我什至不能
米哈伊尔·切什科夫

@JoachimWagner是的,这是正确的,为什么在使用特殊环境变量调用特定程序时,为什么conda和/或bioconda或virtenv是首选方法。通过使用封闭的环境,无意中设置LD_LIBRARY路径不会产生系统性问题。
安多·基斯

23

该文件.bash_profile仅由登录Shell执行。您可能需要将其放在中~/.bashrc,或者直接注销并再次登录。


谢谢约阿希姆·皮勒伯格。我已经重启了系统,现在它的路径已永久设置。
singha 2012年


17

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


14

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

发布,只要您打开新的终端机/ Konsole,LD_LIBRARY_PATH就会反映出来


很抱歉没有提及发布。它的Fedora 16
singha,2012年

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

    export LD_LIBRARY_PATH=<your path>

  3. 保存并退出。

  4. 执行此命令

    sudo ldconfig


3

我在Mint 15至17中执行以下操作,也可以在ubuntu服务器12.04及更高版本上使用:

sudo vi /etc/bash.bashrc 

滚动到底部,然后添加:

export LD_LIBRARY_PATH=.

所有用户都添加了环境变量。


3

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

cd /etc/profile.d
sudo touch myenv_vars.sh
sudo gedit myenv_vars.sh

将此添加到空文件,然后保存。

export LD_LIBRARY_PATH=/usr/local/lib

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


1
很棒的答案。我最好的选择是在系统初始化期间每次都导出路径,这比物理编辑/ etc / bashrc安全得多
Joseph
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.