libGLEW.so.1.11: 공유 개체 파일을 열 수 없습니다.

libGLEW.so.1.11: 공유 개체 파일을 열 수 없습니다.

OpenGL 프로그램을 컴파일하려고 하는데 결과는 다음과 같습니다.

공유 라이브러리 로드 오류: libGLEW.so.1.11: 공유 개체 파일을 열 수 없습니다. 해당 파일 또는 디렉터리가 없습니다.

엮다:

 g++ -o triangle triangle.cpp LoadShaders.cpp -I/home/mks/myGL/oglpg/include/ -L/home/mks/myGL/oglpg/lib  -L/usr/lib64 -lglut -lGL -lGLU -lGLEW

모든 라이브러리는 /home/mks/myGL/oglpg/lib에 있습니다:

 libGLEW.so       libGLEW.so.1.11.0  
 libGLEW.a    libGLEW.so.1.11  

(저는 파워 유저가 아니기 때문에 위 폴더에 glew를 설치했습니다)

만약 내가한다면:

ldd ./triangle | grep "GLEW"
        libGLEW.so.1.11 => not found

- 갱신 - -

엮다:

g++ -o triangle triangle.cpp LoadShaders.cpp -I/home/mks/myGL/oglpg/include/ -L/home/mks/myGL/oglpg/lib -L/usr/lib64 -lglut -lGL -lGLU -lGLEW

ldd./삼각형:

linux-vdso.so.1 =>  
        libglut.so.3 => /usr/lib64/libglut.so.3 
        libGL.so.1 => /usr/lib64/nvidia/libGL.so.1 
        libGLU.so.1 => /usr/lib64/libGLU.so.1 
        libGLEW.so.1.11 => not found
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 
        libm.so.6 => /lib64/libm.so.6
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 
        libc.so.6 => /lib64/libc.so.6 
        libXext.so.6 => /usr/lib64/libXext.so.6 
        libX11.so.6 => /usr/lib64/libX11.so.6
        libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 
        libXi.so.6 => /usr/lib64/libXi.so.6 
        libnvidia-tls.so.340.29 => /usr/lib64/nvidia/tls/libnvidia-tls.so.340.29 
        libnvidia-glcore.so.340.29 => /usr/lib64/nvidia/libnvidia-glcore.so.340.29 
        libdl.so.2 => /lib64/libdl.so.2 
        /lib64/ld-linux-x86-64.so.2
        libxcb.so.1 => /usr/lib64/libxcb.so.1 
        libXau.so.6 => /usr/lib64/libXau.so.6 

ls -al /home/mks/myGL/oglpg/lib:

drwxr-xr-x.  .
drwxr-xr-x.  ..
-rw-r--r--.  freeglut_static.lib
-rw-r--r--.  freeglut_static_vs2010_d.lib
-rw-r--r--.  freeglut_static_vs2010.lib
-rw-r--r--.  gl3w.c
-rw-r--r--.  glew_static_d.lib
-rw-r--r--.  glew_static_vs2010_d.lib
-rw-r--r--.  glew_static_vs2010.lib
-rw-r--r--.  libfreeglut.a
-rw-r--r--.  libglew32.a
-rw-r--r--.  libGLEW.a
lrwxrwxrwx.  libGLEW.so -> libGLEW.so.1.11.0
lrwxrwxrwx.  libGLEW.so.1.11 -> libGLEW.so.1.11.0
-rw-r--r--.  libGLEW.so.1.11.0
-rw-r--r--.  LoadShaders.cpp
-rw-r--r--.  targa.cpp
-rw-r--r--.  vbm.cpp
-rw-r--r--.  vermilion32_d.lib
-rw-r--r--.  vermilion32.lib
-rw-r--r--.  vermilion64_d.lib
-rw-r--r--.  vermilion64.lib

에코 $경로:

/usr/local/cuda-6.0/bin:/home/mks/bin:/usr/local/cuda-6.0/bin:/usr/lib64/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

답변1

동적 라이브러리를 찾을 수 있는 위치를 시스템에 지시해야 합니다. 시스템 전체 디렉터리는 /usr/lib동적 라이브러리의 기본 검색 경로에 있지만 사용자 지정 디렉터리를 추가하려면 환경 변수에 나열하여 선언해야 합니다 LD_LIBRARY_PATH. 이는 콜론으로 구분된 디렉토리 목록입니다 PATH.

export LD_LIBRARY_PATH=/home/mks/myGL/oglpg/lib

~/.profile환경 변수를 정의하는 위치 또는 어디에나 이 줄을 배치하십시오 . 셸에서 실행할 수도 있으며 해당 셸에서 시작된 모든 프로그램에 적용됩니다.

또는 라이브러리를 사용하여 프로그램을 빌드할 때 해당 위치를 시스템에 등록하십시오.

g++ -Wl,-rpath,/home/mks/myGL/oglpg/lib … -L /home/mks/myGL/oglpg/lib -lGLEW

이것프로그램 라이브러리 Howto의 공유 라이브러리에 대한 장추가 도움을 받을 수도 있습니다.

답변2

고쳐 쓰다

방금 슈퍼유저 댓글을 확인했습니다. 루트가 되지 않고도 link 명령을 시도할 수 있습니다. 폴더의 권한이 여전히 허용될 수도 있습니다. 이것이 실패하면 시스템 관리자에게 도움을 요청해야 합니다.


애플리케이션이 라이브러리를 찾을 때 심볼릭 링크가 존재하지 않습니다.

이것을 시도해 보십시오(루트인 경우):

ln -sf /home/mks/myGL/oglpg/lib/libGLEW.so.1.11.0 /usr/lib64/libGLEW.so.1.11

그런 다음 ldd ./triangle다시 실행하고 출력에 심볼릭 링크가 있는지 확인하세요. 위치를 보지 않으면 다른 심볼릭 링크를 찾아서 거기에 링크를 만듭니다. 위치가 아닌 경우 심볼릭 링크 위치를 수정한 후 파일 시스템에 사용되지 않는 심볼릭 링크를 남겨두고 나중에 정리하는 것을 잊지 않도록 심볼릭 링크 위치를 /usr/lib64수정하십시오 .unlink /usr/lib64/libGLEW.so.1.11

왜냐하면=> 링크 만들기

SF 익스프레스=> 심볼릭 링크, 필수

관련 정보