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?

dwj
fonte

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
Kees Cook
fonte
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
Extender
fonte
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.

Jacob Peddicord
fonte
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.

corda
fonte