ldd não encontra caminho, como adicionar

2

Eu sei que essa pergunta não é muito nova, mas parece que eu não consegui resolver meu problema sozinha.

ldd gera a seguinte saída

u123@PC-Ubuntu:~$ ldd /home/u123/Programme/TestPr/Debug/TestPr
    linux-vdso.so.1 =>  (0x00007ffcb6d99000)
    libcsfml-window.so.2.2 => not found
    libcsfml-graphics.so.2.2 => not found
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcebb2ed000)
    /lib64/ld-linux-x86-64.so.2 (0x0000560c48984000)

qual é a maneira correta de dizer ao ld o caminho correto?

    
por C-Jay 27.04.2016 / 09:58

3 respostas

5

se suas bibliotecas não estiverem no caminho padrão, você precisará adicioná-las ao caminho ou adicionar um caminho não padrão a LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<Your_non-Standard_path>

Depois de fazer qualquer uma das coisas acima, você precisa atualizar a ligação de tempo de execução do vinculador dinâmico executando o comando abaixo:

sudo ldconfig

ATUALIZAÇÃO:

Você pode tornar as alterações permanentes gravando a linha export acima em um de seus arquivos de inicialização (por exemplo, ~ / .bashrc) OU se a biblioteca subjacente não estiver em conflito com nenhuma outra biblioteca em seguida, coloque em um dos caminho da biblioteca padrão (por exemplo, / lib, / usr / lib)

    
por 27.04.2016 / 09:59
4

LD_LIBRARY_PATH é adequado para testes curtos, mas como há apenas uma variável , é difícil usá-lo quando você tem vários aplicativos com bibliotecas personalizadas.

A forma usual para o Debian / Ubuntu é adicioná-lo à configuração do carregador, por exemplo, um arquivo em

/etc/ld.so.conf.d

contendo o diretório no qual você deseja que o carregador pesquise, por exemplo,

/usr/local/libcsfml

Leitura adicional:

por 28.04.2016 / 10:42
0

Parece que o binário em questão foi compilado por você.

Então você é responsável pelo problema que algumas bibliotecas não podem ser encontradas.

Caso essas bibliotecas estejam disponíveis em seu sistema, elas parecem estar localizadas em locais de diretório não padrão.

Use -R directory para a chamada final do compilador para informar ao vinculador o directory onde as bibliotecas estão localizadas. Mais do que uma única opção -R directory é possível.

Observe que quando você está usando gcc , pode ser necessário usar -Wl,-R em vez de -R .

    
por 27.04.2016 / 14:31

Tags