2012-12-27 3 views
2

C++/Qt5 프로젝트에서 OpenGL과 링크하지 못했습니다. 나는 다음과 같은 명령을 사용하고 있습니다 : /usr/bin/ld : -lGL을 찾을 수 없습니다. (Nvidia, (L) Ubuntu 12.10)

g++ -m64 -Wl,[...] -o [...] [...].o        \ 
    -L/usr/X11R6/lib64 -L[...]/qt-5.0.0/5.0.0/gcc_64/lib   \ 
    -lQt5Widgets -lQt5Network -lQt5Gui -lQt5Core -lGL -lpthread 

나는 중요한 뭔가 숨기고 있지 않은 [...]를 바랍니다. 그들이 있다고 생각한다면 알려주세요. 루 분투 12.10 시스템에

/usr/bin/ld: cannot find -lGL 

난과 http://qt-project.org/downloads에서 Qt5를 사용하여 :

나는 다음과 같은 오류가 발생합니다. 시스템이 새로 설치 되었기 때문에 우분투의 nvidia-current 패키지를 설치하고 재부팅했다. 내가 g++nvidia-current 만 하위 폴더에 보이지 않는 것을 짐작대로, 기본 라이브러리 검색 경로에이 경로를 추가하는 방법에 봤

$ ll /usr/lib/nvidia-current/ 
[...] 
lrwxrwxrwx 1 root root  10 Oct 6 04:58 libGL.so -> libGL.so.1 
lrwxrwxrwx 1 root root  15 Oct 6 04:58 libGL.so.1 -> libGL.so.304.43 
-rw-r--r-- 1 root root 1076560 Oct 6 04:58 libGL.so.304.43 
[...] 

: 그 중에서도 다음과 같은 라이브러리가 시스템에 설치되어 /usr/lib. 그래서 우분투에서 ld.conf.d 경로를 추가했습니다. 나는 ldconfig를 업데이트하고 다음 명령으로 확인 :

$ ldconfig -p | grep libGL.so 
     libGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-current/libGL.so.1 
     libGL.so.1 (libc6) => /usr/lib32/nvidia-current/libGL.so.1 
     libGL.so (libc6,x86-64) => /usr/lib/nvidia-current/libGL.so 
     libGL.so (libc6) => /usr/lib32/nvidia-current/libGL.so 

을 그래서 모든 것이 잘 보인다! (다시 부팅 한 후에도) 위에서 오류가 나타납니다. 내가 놓친 게 있니?

편집 :

-L/usr/lib/nvidia-current/를 추가 한 후, 모든 것이 잘 작동합니다. 그러나 이것은 이것이 올바른 방법이 아닌 것 같습니다. 라이브러리를 기본 경로로 연결하십시오.

답변

3

배포판에서는 그래픽 라이브러리의 libGL을 시스템 라이브러리 경로에 설치하지 않고 /usr/lib의 추가 디렉토리를 사용하여 동일한 시스템에 libGL.so의 다른 변형을 설치할 수 있습니다. 그런 다음 활성화 된 심볼릭 링크 libGL.so은 Ubuntu 및 Debian에서 사용되는 alternatives과 같이 일부 중앙 집중식 구성 시스템에 의해 만들어집니다. 이 구성 단계가 실패했을 수도 있습니다.

/usr/lib/nvidia-current은 표준 라이브러리 경로가 아니므로 라이브러리를 찾을 수 없습니다. 이것은 또한 OpenGL 프로그램이 작동해서는 안된다는 것을 의미합니다. 어쩌면 우분투 사람들은 이것을 우회하기 위해 LD_LIBRARY_PATH 환경 변수를 사용하여 무언가를 할 것입니다.

는 개인적으로 나는 또한이 작업을 수행 할 수 있습니다 당신은 항상 양호하게는, /usr/lib 또는 /usr/lib64에서 32/64 비트 multilib 시스템과 /usr/lib32

/usr/lib/libGL.so.1 => /usr/lib/nvidia-current/libGL.so.1 
/usr/lib32/libGL.so.1 => /usr/lib32/nvidia-current/libGL.so.1 
/usr/lib/libGL.so => /usr/lib/nvidia-current/libGL.so 
/usr/lib32/libGL.so => /usr/lib32/nvidia-current/libGL.so 

을가 기본으로 라이브러리 경로에 libGL.so을해야 당신이, 심볼릭 링크를 추가하는 것이 좋습니다 alternatives 시스템을 사용하여 새로운 대안을 추가하십시오.

+0

이것은 x64 시스템에 약간의 시간을 절약 해주었습니다 (이름은 조금 다르지만 중요하지 않습니다). 고마워요! – mlvljr