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.