Defina LD_LIBRARY_PATH para aplicativos iniciados na área de trabalho


8

Eu tenho o Qt Creator instalado no Ubuntu 10.04 LTS. Quando inicio o Qt Creator a partir da área de trabalho, posso criar o aplicativo em que estou trabalhando, mas não posso executá-lo ou depurá-lo. Depois de lutar um pouco, descobri que LD_LIBRARY_PATH não está definido para aplicativos executados na área de trabalho. Se eu iniciar o Qt Creator a partir do bash (onde LD_LIBRARY_PATH está definido em .bashrc) tudo será executado e depurado perfeitamente.

Como defino LD_LIBRARY_PATH para que seja definido para todos os aplicativos em execução?

Respostas:


6

Isso parece um bug no próprio aplicativo. Ele deve ter um script de wrapper que defina corretamente todas as LD_LIBRARY_PATHvariáveis necessárias . Porém, tenha cuidado ao escrever um script desse tipo, pois você não deseja ter nenhuma parte vazia da LD_LIBRARY_PATHstring entre os dois pontos que ela usa como separadores de caminho. Por exemplo, isso pode resultar em um caminho incorreto, se a variável estiver vazia inicialmente (resultando em uma cadeia vazia antes dos dois pontos):

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/path/for/app"

Portanto, ao adicionar um caminho, você deve testar primeiro a string vazia. Por exemplo, usando o código do shell:

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/some/path/for/app

2

Crie um novo arquivo /etc/ld.so.conf contendo:

# Begin /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
# whatever else #

Atualize o cache do carregador dinâmico executando:

ldconfig

0

Além de .bashrc, também defina a variável de ambiente em .profile. Este arquivo será processado e carregado pela sua sessão, portanto, deve afetar tudo que está sendo executado como seu usuário. Além disso: este arquivo diz que não é lido pelo Bash, se .bashrcexistir, mas parece aplicar-se ainda (talvez porque o Bash herda a sessão X de onde foi iniciada). Não faz mal ter a variável nos dois arquivos, no entanto.


Tentei criar .profile também sem sorte.
— Dwj

Eu li em algum lugar que existe um recurso de "segurança" do Ubuntu (Debian?) Que não pode permitir que você defina LD_LIBRARY_PATH na inicialização, pois é substituído após o carregamento do .profile. Ainda existem soluções alternativas.
— ALFC


0

configure-o em /etc/bash.bashrc próximo ao topo para fazer uma alteração ampla no sistema durante a inicialização.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.