Por que o LD_LIBRARY_PATH só funciona em ~ / Desktop /?

0

Se eu executar o aplicativo app do ~/Desktop/ que estou recebendo:

/home/me/Desktop/app: error while loading shared libraries: somelib.so.0: cannot open shared object file: No such file or directory

Então, criei esse script chamado app.sh :

DIR="$(dirname "$0")"
export LD_LIBRARY_PATH=$DIR
$DIR/app

E então o app é executado.

No entanto, decidi que não gostaria de tê-lo na área de trabalho, mas ter sob ~/dev/apps/ . Então eu movo todos os arquivos (app, somelib.so.0, app.sh) e recebo esse erro quando executo o script:

/home/me/dev/apps/app: error while loading shared libraries: somelib.so.0: cannot open shared object file: No such file or directory

Se eu movê-lo para ~/foo/bar/ ainda não será executado.

Por favor, note:

  • Todos os diretórios e arquivos têm as mesmas permissões.
  • Todos os arquivos estão no mesmo diretório.
  • Chamo o script de ~/Destop/app.sh ou ~/dev/app/app.sh .
  • Estou executando a partir de /home/me

Isso é um comportamento normal ou há algo errado com minha configuração ou configuração?

    
por Juan Garcia 20.07.2017 / 14:14

2 respostas

0

Eu percebi que ao copiar todos os arquivos no Nautilus, a biblioteca dinâmica estava sendo copiada como um link flexível e o tamanho do arquivo era muito menor.

Excluir a biblioteca e copiá-la novamente do bash resolveu o problema.

Estou adicionando o Nautilus como uma tag à pergunta. No entanto, não consigo mais reproduzir esse problema, mesmo quando copie e cole novamente do Nautilus.

    
por Juan Garcia 21.07.2017 / 05:26
0

Você pode adicionar o caminho explícito em LD_LIBRARY_PATH da seguinte forma:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/Desktop/app/lib

(use o caminho do exemplo para a biblioteca)

Você também pode adicionar isso em seu .bash_profile

Você também pode criar o softlink em /usr/lib para sua biblioteca

    
por Romeo Ninov 20.07.2017 / 15:12