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?


você tem opengl instalado?
lpapp


Respostas:


157

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

sudo apt install libgl1-mesa-dev

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

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.


2

escrever:

yum provides */libGL.so 

depois de fornecer:

yum install mesa-libGL-devel mesa-libGLU-devel


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.


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.


-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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.