Qt: tidak dapat menemukan kesalahan -lGL


109

Saya baru saja menginstal ulang QtCreator, membuat proyek baru ( Aplikasi Qt ) dan mendapatkan ini setelah kompilasi:

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

( Proyek kosong, saya tidak melakukan perubahan apa pun )

Qt Creator 2.7.2
Berdasarkan Qt 5.1.0 (32 bit)
Ubuntu 13.04

Bagaimana cara mengatasi masalah ini?


apakah kamu sudah menginstal opengl?
lpapp


Jawaban:


157

Anda harus menginstal paket "libgl1-mesa-dev":

sudo apt install libgl1-mesa-dev

6
Bagaimana ini jawaban yang benar? Mengapa Anda harus menautkan ke perpustakaan yang tidak digunakan? Bukankah seharusnya flag linker tidak disertakan -lGL?
Cuadue

6
@Cuadue: GL dalam kesalahan dan di libgl1 -... adalah untuk OpenGL, ketergantungan mendasar Qt 5.x. Ini adalah kesalahan umum untuk devs saat menyiapkan pengembangan Qt - tetapi begitu mereka menginstal lib pengembangan OpenGL, mereka tidak akan pernah melihatnya lagi.
pixelgrease

Ubuntu 20.04 dikirimkan dengan pustaka OpenGL yang diperlukan, tidak perlu menginstal paket apa pun, Anda hanya perlu menggunakan lnuntuk membuat tautan di / usr / lib, lihat jawaban destan , paket 20.04 tampaknya tidak memiliki sesuatu yang berguna di dalamnya.
jrh

75

Anda tidak perlu menginstal apapun. libGLsudah diinstal dengan Ubuntu, Anda hanya perlu melakukan soft link. (diuji untuk ubuntu 14.x dan 15.x, mungkin berfungsi untuk versi yang lebih baru)

  1. Pertama temukan perpustakaan GL
  2. Kemudian tautkan di bawah / usr / lib
  3. Jika perpustakaan hilang, itu dapat diinstal melalui paket libgl1-mesa-dev

Inilah cara Anda dapat melakukan ini:

$ 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
Ya, ini berhasil. Biasanya ide yang baik untuk dijalankan ldconfigsetelah berurusan dengan perpustakaan bersama seperti dalam kasus ini.
José Tomás Tocino

Terima kasih atas jawabannya! Di sistem saya, saya memiliki beberapa libGL karena sdk Android, steam, dan aplikasi lain. Folder mesa asli juga ada di i386-linux-gnufolder. Bagi siapa pun yang membaca jawaban ini, Anda dapat dengan mudah menemukan pustaka terinstal default di Ubuntu dengan menjalankan locate libGL | grep mesadan kemudian mengubah sudo lnperintah terakhir yang disebutkan dalam jawaban ini dengan lokasi yang benar.
Akash Agarwal

1
Ini berfungsi untuk saya di Ubuntu 16.10, tetapi saya bingung apakah sekarang menggunakan GPU NVidia untuk rendering OpenGL, atau sebagai / w renderer?
DavidJ

Jawaban ini sepertinya tidak menyelesaikan pertanyaan pkg-config, bukan? IE: jika Anda memiliki qt build lines yang disiapkan untuk menggunakan pkg-config --libs, solusi ini masih tidak akan mengembalikan apa pun untuk GL? Untuk amannya, saya cukup menginstal mesa-dev.
Alex Summers

3
Anda Pak, pantas mendapatkan kue bukan penipu yang merupakan tick besar
djangodude

3

Modul gui Qt disertakan secara default . Jika Anda tidak ingin menggunakannya dalam proyek (misalnya, ini adalah perpustakaan atau hanya menggunakan stdio), Anda perlu menentukannya di file .pro.

QT -= gui

Dan penaut tidak akan mencoba menemukan lGL terlepas dari apakah itu diinstal.

Kasus saya memang agak aneh, karena alasan utama menggunakan Qt adalah untuk membuat gui. Memasang GL library tentu tidak sulit, saya hanya ingin tahu mengapa Hello World saya yang cepat dan kotor menginginkannya.


2

menulis:

yum provides */libGL.so 

setelah memberikan:

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


1

Sistem saya adalah Ubuntu 16.04 pada komputer x86 (dengan NVIDIA GeForce GPU).

Periksa file perpustakaan yang terletak di /usr/lib/x86_64-linux-gnu

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

Jika Anda melihat tautan rusak, instal ulang libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

Dan, periksa kembali perpustakaannya.


0

Dalam kasus saya: Saya telah menginstal QT 32 bit lib di Win10 64 bit dan mengalami kesalahan, saya mengubah ke semua 64 bit dan pembuat QT berjalan dengan lancar.


-1

Memecahkan masalah ini beberapa menit yang lalu di suse. Lakukan saja langkah berikut di bawah ini dan QTCreator seharusnya berfungsi dengan baik.

sudo zypper install --type pattern devel_basis

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.