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?

Hofmn
sumber

Jawaban:

157

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

sudo apt install libgl1-mesa-dev
Sayyed Hassan Amiri
sumber
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
destan
sumber
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.

squeevee
sumber
2

menulis:

yum provides */libGL.so 

setelah memberikan:

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

Ini berhasil untuk saya:

sudo ln -s /usr/lib/libEGL1.so /usr/lib/libGL.so
Sebastian Karlsson
sumber
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.

Lastea
sumber
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.

nobjta_9x_tq
sumber
-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

Suomynona Anonim
sumber