Como definir a variável de ambiente LD_LIBRARY_PATH no linux

212

Eu primeiro executei o comando: export LD_LIBRARY_PATH=/usr/local/lib

Então eu ter aberto .bash_profilearquivo: vi ~/.bash_profile. Neste arquivo, eu coloquei:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

Então, se o terminal for fechado e reiniciado, a digitação echo $LD_LIBRARY_PATHnão exibirá resultado.

Como definir o caminho permanentemente?

singha
fonte
9
Apontando-o óbvio aqui ... Se você quiser apenas para corrigir o que você fez, adicione um $, por exemploexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH
Biscoito
11
basta executar sudo ldconfigdepois disso
Necktwi
isso pode ser bobo, mas você fez $ source ~/.bash_profile? Eu costumo esquecer isso. E então, como @neckTwi disse ldconfig executar
ashley

Respostas:

208

Você deve adicionar mais detalhes sobre sua distribuição, por exemplo, no Ubuntu, a maneira correta de fazer isso é adicionar um .confarquivo personalizado /etc/ld.so.conf.d, por exemplo

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

dentro do arquivo, você deve escrever o caminho completo para o diretório que contém todas as bibliotecas que deseja adicionar ao sistema, por exemplo

/home/linux/myLocalLibs

lembre-se de adicionar apenas o caminho ao diretório, não o caminho completo para o arquivo, todas as bibliotecas dentro desse caminho serão indexadas automaticamente.

Salve e execute sudo ldconfigpara atualizar o sistema com essas bibliotecas.

user1824407
fonte
Desculpe por não mencionar a distribuição. Seu Fedora 16
singha
você pode usar esta solução para o Fedora, a solução sugerida por Joachim Pileborg é útil se você decidir limitar a visualização dessas bibliotecas a 1 usuário específico, se desejar uma biblioteca ampla em todo o sistema, use minha solução. Tudo depende do que você está procurando.
user1824407
11
Este é realmente o caminho certo? Suponha que você tenha vários usuários criando bibliotecas locais e os tenha adicionado ao /etc/ld.so.conf.d. Agora, o usuário A pode vincular-se às bibliotecas locais do usuário B. Não é bom.
Ergosys #
/usr/local/libnormalmente já está lá, então não há necessidade de editar nenhum arquivo, apenas sudo ldconfig.
usar o seguinte código
1
Estranho, funcionou com todos vocês, no entanto, não funcionou para mim, enquanto o export LD_LIBRARY_PATH ....caminho funciona!
precisa saber é o seguinte
105

Mantenha o caminho anterior, não o substitua:

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

Você pode adicioná-lo ao seu ~ / .bashrc:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc
Ariel Monaco
fonte
36

Adicionar

LD_LIBRARY_PATH = "/ caminho / você / desejo1: / caminho / você / desejo / 2"

para /etc/environment

Veja a documentação do Ubuntu .

CORREÇÃO: Eu devo seguir meu próprio conselho e realmente ler a documentação. Ele diz que isso não se aplica ao LD_LIBRARY_PATH: Desde o Ubuntu 9.04 Jaunty Jackalope, o LD_LIBRARY_PATH não pode ser definido nos arquivos $ HOME / .profile, / etc / profile e / etc / environment. Você deve usar os arquivos de configuração /etc/ld.so.conf.d/ .conf. * Portanto, a resposta do user1824407 é imediata.

MrUser
fonte
Uau, eu olhei para essa página várias vezes e esqueci. Obrigado por identificá-lo e trazê-lo à nossa atenção.
22315 Michael Scheper
4
O Ubuntu é um caso especial aqui. A visão do Ubuntu é que todos os usuários desejam as mesmas bibliotecas e que existe apenas um lugar para cada biblioteca (leia a discussão no bug da barra de ativação # 366728). No entanto, em sistemas de pesquisa ou desenvolvimento multiusuário, você deseja que cada usuário possa ter suas próprias versões de bibliotecas. A maioria das distribuições Linux permite isso e o faz há muitos anos.
Joachim Wagner
9
Passei 4 horas tentando entender por que posso definir PATH e PKG_CONFIG_PATH, mas não LD_LIBRARY_PATH. Eu não posso nem.
Mikhail Cheshkov
@JoachimWagner Sim, isso está correto, e por que conda e / ou bioconda ou virtenv agora é o método preferido para chamar um programa específico com variáveis ​​ambientais especiais. Ao usar ambientes encapsulados, a configuração inadvertida do caminho LD_LIBRARY não terá problemas / problemas sistêmicos.
Andor Kiss
23

O arquivo .bash_profileé executado apenas por shells de login. Pode ser necessário inseri-lo ~/.bashrcou simplesmente sair e fazer login novamente.

Algum cara programador
fonte
Obrigado Joachim Pileborg. Reiniciei o sistema e agora o caminho está definido permanentemente.
Singha
21

Como alternativa, você pode executar o programa com o diretório especificado da biblioteca:

/lib/ld-linux.so.2 --library-path PATH EXECUTABLE

Leia mais aqui .

K15.Multik
fonte
2
Ajudou-me bem
spt025
17

Por alguma razão, ninguém mencionou o fato de que o bashrc precisa ser recuperado após a edição. Você pode sair e entrar novamente (como mencionado acima), mas também pode usar os comandos: source ~/.bashrcou . ~/.bashrc.

nbroeking
fonte
14

Colocar export LD_LIBRARY_PATH=/usr/local/libem ~/.bashrc[de um modo preferido para a extremidade de script para evitar quaisquer substituições no meio, padrão ~/.bashrcvem com muitosif-else demonstrações]

Poste que sempre que você abrir um novo terminal / konsole, LD_LIBRARY_PATHserá refletido

Anshul
fonte
Desculpe por não mencionar a distribuição. Seu Fedora 16
singha
7
  1. Vá para a pasta inicial e edite .profile
  2. Coloque a seguinte linha no final

    export LD_LIBRARY_PATH=<your path>

  3. Salvar e sair.

  4. Execute este comando

    sudo ldconfig

singingsingh
fonte
3

Eu faço o seguinte no Mint 15 a 17, também funciona no servidor ubuntu 12.04 e superior:

sudo vi /etc/bash.bashrc 

role até o final e adicione:

export LD_LIBRARY_PATH=.

Todos os usuários têm a variável de ambiente adicionada.

Johnnyb
fonte
3

Você pode tentar adicionar um script personalizado, digamos myenv_vars.shem /etc/profile.d.

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

Adicione isso ao arquivo vazio e salve-o.

export LD_LIBRARY_PATH=/usr/local/lib

Logout e login LD_LIBRARY_PATHserão definidos permanentemente.

Methusael Murmu
fonte
1
Resposta incrível. A melhor escolha para mim para exportar um caminho cada vez durante a inicialização do sistema e muito mais seguro do que a edição fisicamente / etc / bashrc
Joseph