LD_LIBRARY_PATH는 어디에 있습니까? LD_LIBRARY_PATH env 변수를 어떻게 설정합니까? 작성하려고합니다. 오류가 발생했습니다 Linking CXX executable ../../bin/ME /usr/bin/ld: cannot

유닉스를 사용하여 C ++ 프로그램을 작성하려고합니다.

오류가 발생했습니다

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

LD_LIBRARY_PATH env 변수에서 libboost *의 위치를 ​​설정하고 원래 입력 한대로 make를 호출해야한다고 들었습니다.

-L /usr/lib64 -l boost_regex-mt

또는

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64

그러나 LD_LIBRARY_PATH는 어디에 있습니까? LD_LIBRARY_PATH env 변수를 어떻게 설정합니까?



답변

LD_LIBRARY_PATH env 변수를 어떻게 설정합니까?

이 작업을 수행했을 때 이미 설정했습니다.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64

그러나 그렇게해도 문제가 해결되지는 않습니다. $LD_LIBRARY_PATH동적 링크 가능한 라이브러리를 검색 할 추가 디렉토리 목록을 제공하기 위해 실행시 참조됩니다. 링크 타임에는 참조되지 않습니다 (빌드 도구 자체에 필요한 라이브러리를 찾는 경우 제외).

빌드 타임에 라이브러리를 찾을 위치를 링커에 알리려면 -L링커 옵션 을 사용해야합니다 . 당신도 이미 그렇게했습니다 :

-L /usr/lib64

여전히 오류가 발생하면 라이브러리가 실제로 있는지 확인해야합니다. 파일이 libboost_regex-mt.so있거나 libboost_regex-mt.a해당 디렉토리 (또는 다른 디렉토리)에 있습니까? 이와 같은 파일 libboost_regex-mt.so.othersuffix은이 목적으로 계산되지 않습니다. 이것을 가지고 있지 않다면,이 라이브러리를위한 배포판 개발 패키지를 설치해야 할 것입니다.


답변

LD_LIBRARY_PATH에 새로운 경로를 영구적으로 추가하는 또 다른 방법 :

.conf에서 파일을 수정 하십시오 /etc/ld.so.conf.d/.

응용 프로그램을 설치 한 적이 있으며 다른 응용 프로그램에서 해당 라이브러리를 인식 할 수 없습니다. 그런 다음 경로 /usr/local/hdf5/libx86_64-linux-gnu.conf파일에 추가 합니다. 다음 줄에 넣으십시오. 구하다.

그런 다음 실행 sudo ldconfig

효과가있었습니다.

PS : OS 우분투 14.04


답변

~/.profile쉘의 / 또는 특정 init 파일 에서 설정할 수 있습니다 (예 : ~/.bashrcbash, ~/.zshenvzsh). 그런 다음 쉘을 다시 시작해야합니다 (선택에 따라 로그 아웃했다가 다시 로그인하십시오).

다음을 통해 설정을 확인할 수 있습니다.

env | grep '^LD_LIBRARY_PATH'

편집 : LD_LIBRARY_PATH파일 이름이 일반적으로 이름에 포함 된 기계 코드가 포함 된 공유 라이브러리 용이며 .so다른 버전을 구별하기 위해 마침표로 구분 된 숫자가있을 수 있습니다. 에도 불구하고 LD_LIBRARY_PATHABI 불일치로 인해 라이브러리를 찾을 수 없습니다. 언어 (Perl 및 Python과 같은) 및 패키지에는 .so관련이없는 자체 라이브러리 시스템 ( 파일도 포함)이 있을 수 있습니다 LD_LIBRARY_PATH.


답변

라이브러리 경로 오류가 링커에 있으면 컴파일하는 동안 라이브러리 경로를 변수 $ LD_LIBRARY_PATH에 추가해야합니다. 실제로 컴파일 된 프로그램을 실행할 때 라이브러리 오류가 발생하면 /etc/ld.so.conf에 라이브러리 경로를 추가하고 ldconfig를 실행하여 라이브러리 검색 경로 캐시를 다시 작성해야합니다.


답변

로 해결 :

에 추가 /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