SFML 2.41 이상이 필요한 프로그램을 컴파일하려고합니다. Ubuntu 16.04의 repos에는 새로운 버전이 없으므로 this page에 (다소 희박한) 지침을 따라 SFML 2.4.2를 설치했습니다. 특히 this page에서 리눅스 버전을 dowloaded하고 lib
, share
및 include
폴더를 찾을 때까지 파고 /usr/local/
에 같은 이름의 폴더에 복사했습니다. 내가 sudo ls -l /usr/local/lib | grep libsfml-system.so
I을 실행하면심볼릭 링크가 있지만 ld가 라이브러리를로드 할 수 없습니다.
attempt to open //usr/local/lib/x86_64-linux-gnu/libsfml-system.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libsfml-system.a failed
attempt to open //usr/local/lib/libsfml-system.so failed
attempt to open //usr/local/lib/libsfml-system.a failed
:
/usr/bin/ld: cannot find -lsfml-system
/usr/bin/ld: cannot find -lsfml-window
/usr/bin/ld: cannot find -lsfml-graphics
내가 ld -lsfml-system --verbose | grep /usr/local/lib
을 실행하면 나는 다음과 같은 얻을, 순간 sfml-system
에 초점 :
lrwxrwxrwx 1 root root 21 Oct 16 01:38 libsfml-system.so -> libsfml-system.so.2.4
lrwxrwxrwx 1 root root 23 Oct 16 01:38 libsfml-system.so.2.4 -> libsfml-system.so.2.4.2
-rw-r--r-- 1 root root 72080 Feb 10 2017 libsfml-system.so.2.4.2
그래서 ld
경로에있는 .so
파일에 대한 심볼릭 링크가있는 것 같습니다. 왜 라이브러리를로드 할 수 없습니까?
내가 지금 sudo ldconfig
를 실행 시도했습니다 지금까지
를 시도했다 sudo ldconfig /usr/local/lib/
. 내가 sudo ldconfig --verbose 2> /dev/null | grep sfml
을 실행할 때 그 둘 다 예를 들어, 난 그냥 단지 정보로 표시 메시지를 얻을 stderr
에 (
libsfml-window.so.2.4 -> libsfml-window.so.2.4.2
libsfml-graphics.so.2.4 -> libsfml-graphics.so.2.4.2
libsfml-audio-d.so.2.4 -> libsfml-audio-d.so.2.4.2
libsfml-graphics-d.so.2.4 -> libsfml-graphics-d.so.2.4.2
libsfml-audio.so.2.4 -> libsfml-audio.so.2.4.2
libsfml-window-d.so.2.4 -> libsfml-window-d.so.2.4.2
libsfml-system.so.2.4 -> libsfml-system.so.2.4.2
libsfml-system-d.so.2.4 -> libsfml-system-d.so.2.4.2
libsfml-network-d.so.2.4 -> libsfml-network-d.so.2.4.2
libsfml-network.so.2.4 -> libsfml-network.so.2.4.2
libsfml-network.so.2.3 -> libsfml-network.so.2.3.2
libsfml-graphics.so.2.3 -> libsfml-graphics.so.2.3.2
libsfml-system.so.2.3 -> libsfml-system.so.2.3.2
libsfml-window.so.2.3 -> libsfml-window.so.2.3.2
을 얻을 특별한 방법
ld -lsfml-system
의 동작을 변경 :
/sbin/ldconfig.real: Path `/usr/local/lib' given more than once
및
/sbin/ldconfig.real: /lib/i386-linux-gnu/ld-2.23.so is the dynamic linker, ignoring
그래서 나는 그들이 중요하지 않았다 생각.) /etc/ld.so.cache
이후
이 언급 한, 내가 cp /etc/ld.so.cache /etc/ld.so.cache.bak
와의 복사본을 만들어 sudo ldconfig
을 다시 달렸다. 새 캐시 파일이 생성되었지만 전혀 다르지 않습니다. 즉 diff /etc/ld.so.cache /etc/ld.so.cache.bak
은 아무 것도 인쇄하지 않습니다.
링크 할 때'-L/usr/local/lib' 옵션을 추가 했습니까? 대부분의 리눅스 시스템은 표준 라이브러리 검색 경로에'/ usr/local/lib'을 가지고 있지 않습니다. –
출력의 두 번째 블록에는'usr/local/lib/libsfml-system.so를 열려고 시도했습니다. '라는 메시지가 포함되어있어 내 시스템이 그곳에서 검색하는 것처럼 보입니다. – Ryan1729
@Someprogrammerdude 다른 어떤 것도 작동하지 않았기 때문에'ld -L/usr/local/lib -lsfml-system --verbose'를 실행하려고했지만 위와 같은 결과를 얻었습니다. – Ryan1729