ldd가 경로를 찾을 수 없습니다. 경로를 추가하는 방법

ldd가 경로를 찾을 수 없습니다. 경로를 추가하는 방법

나는 이 문제가 그다지 새로운 것이 아니라는 것을 알고 있지만 내 문제를 스스로 해결할 수는 없는 것 같습니다.

ldd다음 출력을 생성합니다

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)

ld올바른 경로를 알려주는 올바른 방법 은 무엇입니까 ?

답변1

라이브러리가 표준 경로에 없으면 경로에 추가하거나 LD_LIBRARY_PATH에 비표준 경로를 추가해야 합니다.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<Your_non-Standard_path>

위 작업 중 하나를 완료한 후 다음 명령을 실행하여 동적 링커 런타임 바인딩을 업데이트해야 합니다.

sudo ldconfig

고쳐 쓰다:

시작 파일 중 하나(예: ~/.bashrc)에 위 줄을 작성하여 export변경 사항을 영구적으로 적용 할 수 있습니다.또는기본 라이브러리가 다른 라이브러리와 충돌하지 않는 경우 표준 라이브러리 경로(예: /lib, /usr/lib) 중 하나를 입력하세요.

답변2

LD_LIBRARY_PATH단기 테스트에는 좋지만 하나만 있기 때문에바꾸다, 사용자 정의 라이브러리가 있는 여러 애플리케이션이 있는 경우 사용하기가 어색합니다.

Debian/Ubuntu의 일반적인 접근 방식은 이를 로더의 구성에 추가하는 것입니다.

/etc/ld.so.conf.d

로더가 검색할 디렉터리를 포함합니다. 예를 들어 다음과 같습니다.

/usr/local/libcsfml

추가 자료:

답변3

문제의 바이너리는 귀하가 컴파일한 것 같습니다.

따라서 일부 라이브러리를 찾을 수 없는 문제는 귀하의 책임입니다.

시스템에서 이러한 라이브러리를 사용할 수 있는 경우 비표준 디렉토리 위치에 있는 것으로 나타납니다.

라이브러리가 있는 위치를 -R directory링커에게 알리기 위해 최종 컴파일러 호출 에 사용됩니다 . directory두 개 이상의 -R directory옵션이 가능합니다.

을 사용할 때 대신 gcc을 사용해야 할 수도 있습니다 .-Wl,-R-R

관련 정보