onde é LD_LIBRARY_PATH? Como faço para definir a variável env LD_LIBRARY_PATH?

18

Estou tentando construir um programa c ++ usando o Unix.

Eu recebi o erro

Linking CXX executable ../../bin/ME
/usr/bin/ld: cannot find -lboost_regex-mt

Ouvi dizer que preciso apenas definir a localização do libboost * em minha variável env LD_LIBRARY_PATH e, em seguida, invocar make como fiz originalmente, digitando

-L /usr/lib64 -l boost_regex-mt

ou

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64

Mas onde está o LD_LIBRARY_PATH? como eu defino a variável env LD_LIBRARY_PATH?

    
por csx 17.11.2014 / 00:36

4 respostas

19

how do I set the LD_LIBRARY_PATH env variable?

Você já definiu quando fez isso:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64

Mas isso não resolverá seu problema. $LD_LIBRARY_PATH é consultado no momento da execução, para fornecer uma lista de diretórios adicionais nos quais procurar bibliotecas dinamicamente vinculáveis. Ele não é consultado no momento do link (exceto talvez para localizar bibliotecas exigidas pelas próprias ferramentas construídas!).

Para informar ao vinculador onde encontrar bibliotecas no momento da criação, você precisa usar a opção -L linker. Você já fez isso também:

-L /usr/lib64

Se você ainda estiver recebendo o erro, será necessário verificar se a biblioteca está realmente lá. Você tem um arquivo libboost_regex-mt.so ou libboost_regex-mt.a nesse (ou em qualquer outro) diretório? Observe que um arquivo como libboost_regex-mt.so.othersuffix não conta para essa finalidade. Se você não tem isso, provavelmente precisará instalar o pacote de desenvolvimento da sua distribuição para esta biblioteca.

    
por 17.11.2014 / 01:58
6

Outra maneira de adicionar permanentemente o novo caminho em LD_LIBRARY_PATH:

Edite o arquivo .conf em /etc/ld.so.conf.d/ .

Eu já instalei um aplicativo e suas bibliotecas não puderam ser reconhecidas por outro aplicativo. Em seguida, adiciono o caminho, ou seja, /usr/local/hdf5/lib , ao arquivo x86_64-linux-gnu.conf . Basta colocar na próxima linha. Salve .

Em seguida, execute sudo ldconfig

Funcionou.

PS: OS Ubuntu 14.04

    
por 24.05.2016 / 19:06
2

Você pode configurá-lo no seu arquivo ~/.profile e / ou init específico do seu shell (por exemplo, ~/.bashrc para bash, ~/.zshenv para zsh). Então você precisa reiniciar o seu shell (e possivelmente sair e efetuar login novamente, dependendo da sua escolha).

Você pode verificar suas configurações com:

env | grep '^LD_LIBRARY_PATH'
    
por 17.11.2014 / 01:55
1

Se o erro do caminho da biblioteca estiver no vinculador, durante a compilação, você precisará adicionar o caminho à biblioteca na variável $ LD_LIBRARY_PATH. Se o erro da biblioteca é quando você realmente executa o programa compilado, então você precisa adicionar o caminho da biblioteca para /etc/ld.so.conf e executar ldconfig para reconstruir o cache do caminho de busca da biblioteca.

    
por 10.03.2017 / 23:36