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