Qt: não é possível encontrar o erro -lGL

109

Acabei de reinstalar o QtCreator, criei um novo projeto ( aplicativo Qt ) e recebi isto após a compilação:

/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'

(O projeto está vazio, não efetuei nenhuma alteração )

Qt Creator 2.7.2
Baseado em Qt 5.1.0 (32 bits)
Ubuntu 13.04

Como eu resolvo este problema?

Hofmn
fonte
você tem opengl instalado?
lpapp

Respostas:

157

Você deve instalar o pacote "libgl1-mesa-dev":

sudo apt install libgl1-mesa-dev
Sayyed Hassan Amiri
fonte
6
Como esta é a resposta correta? Por que você deve vincular a uma biblioteca que não está sendo usada? Os sinalizadores do linker simplesmente não deveriam incluir -lGL?
Cuadue,
6
@Cuadue: O GL no erro e na libgl1 -... é para OpenGL, uma dependência fundamental do Qt 5.x. Este é um erro comum para desenvolvedores ao configurar o desenvolvimento Qt - mas uma vez que eles instalam a lib de desenvolvimento OpenGL, eles nunca a verão novamente.
pixelgrease
Ubuntu 20.04 vem com as bibliotecas OpenGL necessárias, não é necessário instalar nenhum pacote, você só precisa usar lnpara criar um link em / usr / lib, veja a resposta de destan , o pacote 20.04 não parece ter nada de útil nele.
jrh
75

você não precisa instalar nada. libGLjá está instalado com o Ubuntu, você só precisa fazer um soft link. (testado para ubuntu 14.xe 15.x, pode funcionar para versões posteriores)

  1. Primeiro localize a biblioteca GL
  2. Em seguida, vincule-o em / usr / lib
  3. Se a biblioteca estiver faltando, ela pode ser instalada via pacote libgl1-mesa-dev

Aqui está como você pode fazer isso:

$ 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
Destan
fonte
1
Sim, isso funciona. Normalmente é uma boa ideia executar ldconfigdepois de lidar com bibliotecas compartilhadas, como neste caso.
José Tomás Tocino
Obrigado pela resposta! No meu sistema, eu tinha vários libGL por causa do Android SDK, Steam e outros aplicativos. A pasta mesa original também estava presente na i386-linux-gnupasta. Para quem está lendo esta resposta, você pode localizar facilmente a biblioteca padrão instalada no Ubuntu executando locate libGL | grep mesae, em seguida, alterando o último sudo lncomando mencionado nesta resposta com o local correto.
Akash Agarwal
1
Isso funcionou para mim no Ubuntu 16.10, mas estou confuso se agora está usando a GPU NVidia para renderização OpenGL ou renderizador as / w?
DavidJ
Esta resposta não parece resolver a questão do pkg-config, não é? IE: se você tiver linhas de compilação qt configuradas para usar pkg-config --libs, esta solução ainda não retornará nada para o GL? Por segurança, simplesmente instalei o mesa-dev.
Alex Summers
3
Você, senhor, merece o biscoito, não o vigarista que era o grande carrapato
djangodude
3

O módulo gui Qt é incluído por padrão . Se você não quiser usá-lo em um projeto (por exemplo, é uma biblioteca ou usa apenas stdio), você precisa especificar isso no arquivo .pro.

QT -= gui

E o vinculador não tentará encontrar o lGL, independentemente de ele estar instalado.

Meu caso é reconhecidamente um pouco estranho, já que a principal razão para usar o Qt é para criar gui's. Instalar a biblioteca GL certamente não é difícil, eu só queria saber por que meu rápido e sujo Hello World queria isso.

rodo
fonte
2

escrever:

yum provides */libGL.so 

depois de fornecer:

yum install mesa-libGL-devel mesa-libGLU-devel
Shojib Mahmud
fonte
2

Isso funcionou para mim:

sudo ln -s /usr/lib/libEGL1.so /usr/lib/libGL.so
Sebastian Karlsson
fonte
1

Meu sistema é Ubuntu 16.04 em um computador x86 (com GPU NVIDIA GeForce).

Verifique os arquivos de biblioteca localizados em /usr/lib/x86_64-linux-gnu

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

Se você vir o link quebrado, reinstale libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

E, verifique novamente a biblioteca.

Lastea
fonte
0

No meu caso: instalei a lib QT de 32 bits no Win10 de 64 bits e deu erro, mudei para todas as 64 bits e o criador do QT funcionou sem problemas.

nobjta_9x_tq
fonte
-1

Resolvido esse problema há apenas um minuto em suse. Basta seguir o seguinte passo abaixo e o QTCreator deve funcionar perfeitamente.

sudo zypper install --type pattern devel_basis

Suomynona anônima
fonte