onde está LD_LIBRARY_PATH? como faço para definir a variável env LD_LIBRARY_PATH?

onde está LD_LIBRARY_PATH? como faço para definir a variável env LD_LIBRARY_PATH?

Estou tentando construir um programa c++ usando Unix.

Eu recebi o erro

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

Ouvi dizer que só preciso definir a localização de libboost* em minha variável de env LD_LIBRARY_PATH e então 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á LD_LIBRARY_PATH? como faço para definir a variável env LD_LIBRARY_PATH?

Responder1

como faço para definir a variável env LD_LIBRARY_PATH?

Você já configurou quando fez isso:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64

Mas isso não resolverá o seu problema. $LD_LIBRARY_PATHé consultado no momento da execução, para fornecer uma lista de diretórios adicionais nos quais pesquisar bibliotecas vinculáveis ​​dinamicamente. 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 construção, você precisa usar a -Lopção do vinculador. Você já fez isso também:

-L /usr/lib64

Se ainda estiver recebendo o erro, você precisa ter certeza de que a biblioteca realmente está lá. Você tem um arquivo libboost_regex-mt.soou libboost_regex-mt.anesse (ou em algum) diretório? Observe que um arquivo como libboost_regex-mt.so.othersuffixnão conta para essa finalidade. Se você não tiver isso, provavelmente precisará instalar o pacote de desenvolvimento da sua distribuição para esta biblioteca.

Responder2

Outra maneira de adicionar permanentemente um novo caminho em LD_LIBRARY_PATH:

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

Já instalei um aplicativo e suas bibliotecas não puderam ser reconhecidas por outro aplicativo. Então adiciono o caminho, ou seja /usr/local/hdf5/lib, para x86_64-linux-gnu.confo arquivo. Basta colocar a próxima linha. Salvar.

Então corrasudo ldconfig

Funcionou.

PS: SO Ubuntu 14.04

Responder3

Você pode configurá-lo em seu ~/.profilearquivo init específico do seu shell (por exemplo, ~/.bashrcpara bash, ~/.zshenvpara zsh). Então você precisa reiniciar seu shell (e possivelmente sair e fazer login novamente, dependendo de sua escolha).

Você pode verificar suas configurações com:

env | grep '^LD_LIBRARY_PATH'

EDIT: LD_LIBRARY_PATHé para bibliotecas compartilhadas que contêm código de máquina, cujos nomes de arquivos normalmente contêm .soem seu nome, possivelmente seguidos de números separados por pontos para distinguir diferentes versões. É possível que LD_LIBRARY_PATH, apesar de uma biblioteca não ser encontrada devido à incompatibilidade de ABI. Observe também que linguagens (como Perl e Python) e pacotes podem ter seu próprio sistema de bibliotecas (possivelmente também com .soarquivos), não relacionado ao LD_LIBRARY_PATH.

Responder4

Resolvido com:

adicionar em/etc/systemd/system/pm2-node.service

Environment=PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/app/nodejs/local/nvm/versions/node/v7.8.0/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/node/.pm2
Environment=LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2
Environment=OCI_LIB_DIR=/opt/oracle/instantclient_12_2

informação relacionada