Qt : -lGL 오류를 찾을 수 없습니다.


109

방금 QtCreator를 다시 설치하고 새 프로젝트 ( Qt Application )를 만들었으며 컴파일 후 다음과 같이했습니다.

/usr/bin/ld: **cannot find -lGL**
collect2: error: ld returned 1 exit status
make: *** [untitled1] Error 1
18:07:41: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit)
When executing step 'Make'

( 프로젝트가 비어 있으며 변경 사항을 적용하지 않았습니다. )

Qt
5.1.0 (32 비트)
Ubuntu 13.04 기반 Qt Creator 2.7.2

이 문제를 어떻게 해결합니까?


OpenGL이 설치되어 있습니까?
lpapp 2013-08-23


답변:


157

"libgl1-mesa-dev"패키지를 설치해야합니다.

sudo apt install libgl1-mesa-dev

6
이것이 어떻게 정답입니까? 사용하지 않는 라이브러리에 링크해야하는 이유는 무엇입니까? 링커 플래그에 단순히 포함되지 않아야 -lGL합니까?
Cuadue 2014 년

6
@Cuadue : 오류 및 libgl1 -...의 GL은 Qt 5.x의 기본 종속성 인 OpenGL 용입니다. 이것은 Qt 개발을 설정할 때 개발자에게 흔히 발생하는 오류입니다.하지만 일단 OpenGL 개발 라이브러리를 설치하면 다시는 볼 수 없습니다.
pixelgrease

Ubuntu 20.04는 필수 OpenGL 라이브러리와 함께 제공되며 패키지를 설치할 필요가 없습니다 ln. / usr / lib에 링크를 만드는 데 사용해야 합니다. destan의 답변을 참조하십시오 . 20.04 패키지 에는 유용한 것이없는 것 같습니다.
jrh

75

아무것도 설치할 필요가 없습니다. libGLUbuntu와 함께 이미 설치되어 있으므로 소프트 링크 만하면됩니다. (우분투 14.x 및 15.x에 대해 테스트되었으며 이후 버전에서 작동 할 수 있음)

  1. 먼저 GL 라이브러리를 찾습니다.
  2. 그런 다음 / usr / lib 아래에 링크하십시오.
  3. 라이브러리가 누락 된 경우 libgl1-mesa-dev 패키지를 통해 설치할 수 있습니다.

이를 수행하는 방법은 다음과 같습니다.

$ locate libGL
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0
/usr/lib/x86_64-linux-gnu/libGLU.so.1
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2.0.0
$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so

1
네, 작동합니다. 일반적 ldconfig으로이 경우와 같이 공유 라이브러리를 처리 한 후에 실행하는 것이 좋습니다 .
José Tomás Tocino

답변 해주셔서 감사합니다! 내 시스템에는 Android sdk, Steam 및 기타 응용 프로그램으로 인해 여러 개의 libGL이 있습니다. 원래 메사 폴더도 폴더에있었습니다 i386-linux-gnu. 이 답변을 읽는 사람은 Ubuntu에서 기본 설치된 라이브러리를 쉽게 찾은 locate libGL | grep mesa다음 sudo ln이 답변에 언급 된 마지막 명령을 올바른 위치 로 변경할 수 있습니다.
Akash Agarwal

1
이것은 Ubuntu 16.10에서 저에게 효과적이지만 현재 OpenGL 렌더링에 NVidia GPU를 사용하거나 as / w 렌더러를 사용하는 경우 혼란 스럽습니까?
DavidJ

이 답변은 pkg-config 질문을 해결하지 못하는 것 같습니다. IE : pkg-config --libs를 사용하도록 설정된 qt 빌드 라인이있는 경우이 솔루션은 여전히 ​​GL에 대해 아무것도 반환하지 않습니까? 안전을 위해 mesa-dev를 설치했습니다.
Alex Summers

3
당신 선생님, 쿠키가 아니라 큰 틱이었다 사기꾼 남자 자격
djangodude

3

gui Qt 모듈은 기본적으로 포함되어 있습니다. 프로젝트에서 사용하지 않으려면 (예 : 라이브러리이거나 stdio 만 사용) .pro 파일에서이를 지정해야합니다.

QT -= gui

링커는 설치 여부에 관계없이 lGL을 찾으려고 시도하지 않습니다.

Qt를 사용하는 주된 이유는 GUI를 만드는 것이므로 내 경우는 약간 이상합니다. GL 라이브러리를 설치하는 것은 확실히 어렵지 않습니다. 제 빠르고 더러운 Hello World가 왜 그것을 원했는지 알고 싶었습니다.




1

내 시스템은 x86 컴퓨터 (NVIDIA GeForce GPU 포함)의 Ubuntu 16.04입니다.

다음 위치에있는 라이브러리 파일을 확인하십시오. /usr/lib/x86_64-linux-gnu

ls -al /usr/lib/x86_64-linux-gnu/libG*

끊어진 링크가 보이면 다시 설치하십시오. libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

그리고 라이브러리를 다시 확인하십시오.


0

제 경우 : Win10 64 비트에 QT 32 비트 lib를 설치했는데 오류가 발생하고 모든 64 비트로 변경하면 QT 작성자가 원활하게 실행됩니다.


-1

몇 분 전에 수세에서이 문제를 해결했습니다. 아래 단계를 수행하면 QTCreator가 제대로 작동합니다.

sudo zypper install --type 패턴 devel_basis

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.