Qt: ไม่พบข้อผิดพลาด -lGL


109

ฉันเพิ่งติดตั้ง QtCreator ใหม่สร้างโครงการใหม่ ( แอปพลิเคชัน Qt ) ซึ่งได้รับสิ่งนี้หลังจากการรวบรวม:

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

( โครงการว่างเปล่าฉันไม่ได้ทำการเปลี่ยนแปลงใด ๆ )

Qt Creator 2.7.2
ขึ้นอยู่กับ Qt 5.1.0 (32 บิต)
Ubuntu 13.04

ฉันจะแก้ปัญหานี้ได้อย่างไร?


คุณได้ติดตั้ง opengl หรือไม่
lpapp


คำตอบ:


158

คุณควรติดตั้งแพ็คเกจ "libgl1-mesa-dev":

sudo apt install libgl1-mesa-dev

6
นี่คือคำตอบที่ถูกต้องอย่างไร? เหตุใดคุณจึงควรเชื่อมโยงกับห้องสมุดที่ไม่ได้ใช้งาน ไม่ควรรวมแฟล็กตัวเชื่อมโยง-lGLหรือไม่
Cuadue

6
@Cuadue: GL ในข้อผิดพลาดและใน libgl1 -... มีไว้สำหรับ OpenGL ซึ่งเป็นการพึ่งพาพื้นฐานของ Qt 5.x นี่เป็นข้อผิดพลาดทั่วไปสำหรับ devs เมื่อตั้งค่าสำหรับการพัฒนา Qt แต่เมื่อพวกเขาติดตั้ง OpenGL development lib พวกเขาจะไม่เห็นมันอีกเลย
pixelgrease

อูบุนตู 20.04 เรือต้องห้องสมุด OpenGL ก็ไม่จำเป็นต้องติดตั้งแพคเกจใด ๆ ที่คุณเพียงแค่ต้องใช้lnในการสร้างการเชื่อมโยงใน / usr / lib ให้ดูคำตอบ Destan ของที่20.04 แพคเกจไม่ได้ดูเหมือนจะมีอะไรที่เป็นประโยชน์ในนั้น
jrh

75

คุณไม่จำเป็นต้องติดตั้งอะไรเลย libGLติดตั้งกับ Ubuntu แล้วคุณเพียงแค่ต้องซอฟต์ลิงค์ (ทดสอบสำหรับ ubuntu 14.x และ 15.x อาจใช้ได้กับรุ่นที่ใหม่กว่า)

  1. ขั้นแรกให้ค้นหาไลบรารี GL
  2. จากนั้นเชื่อมโยงภายใต้ / usr / lib
  3. หากไลบรารีหายไปสามารถติดตั้งผ่านแพ็คเกจ libgl1-mesa-dev

นี่คือวิธีที่คุณสามารถทำได้:

$ 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
ใช่มันได้ผล โดยปกติควรเรียกใช้ldconfigหลังจากจัดการกับไลบรารีที่ใช้ร่วมกันเช่นในกรณีนี้
JoséTomás Tocino

ขอบคุณสำหรับคำตอบ! ในระบบของฉันฉันมี libGL หลายตัวเนื่องจาก Android sdk, steam และแอปพลิเคชันอื่น ๆ โฟลเดอร์ mesa ดั้งเดิมยังปรากฏอยู่ในi386-linux-gnuโฟลเดอร์ สำหรับทุกคนที่อ่านคำตอบนี้คุณสามารถค้นหาไลบรารีที่ติดตั้งเริ่มต้นใน Ubuntu ได้อย่างง่ายดายโดยการเรียกใช้locate libGL | grep mesaจากนั้นแก้ไขsudo lnคำสั่งสุดท้ายที่กล่าวถึงในคำตอบนี้ด้วยตำแหน่งที่ถูกต้อง
Akash Agarwal

1
สิ่งนี้ใช้ได้กับฉันบน Ubuntu 16.10 แต่ฉันสับสนว่าตอนนี้ใช้ NVidia GPU สำหรับการเรนเดอร์ OpenGL หรือเป็น / w renderer?
DavidJ

คำตอบนี้ดูเหมือนจะไม่สามารถแก้คำถาม pkg-config ได้หรือไม่? IE: หากคุณตั้งค่าสายการสร้าง qt เพื่อใช้ pkg-config --libs โซลูชันนี้จะยังไม่คืนค่าอะไรให้กับ GL? เพื่อความปลอดภัยฉันเพียงแค่ติดตั้ง mesa-dev
Alex Summers

3
คุณท่านสมควรได้รับคุกกี้ไม่ใช่ชายที่เป็นเห็บตัวใหญ่
djangodude

3

โมดูล Qt GUI ถูกรวมโดยเริ่มต้น หากคุณไม่ต้องการใช้ในโปรเจ็กต์ (เช่นไลบรารีหรือใช้เฉพาะ stdio) คุณต้องระบุสิ่งนั้นในไฟล์. pro

QT -= gui

และตัวเชื่อมโยงจะไม่พยายามค้นหา lGL ไม่ว่าจะติดตั้งหรือไม่ก็ตาม

กรณีของฉันค่อนข้างแปลกเนื่องจากเหตุผลหลักในการใช้ Qt คือการสร้าง gui การติดตั้งไลบรารี GL นั้นไม่ใช่เรื่องยากอย่างแน่นอนฉันแค่อยากรู้ว่าทำไม Hello World ถึงรวดเร็วและสกปรกถึงต้องการ




1

ระบบของฉันคือ Ubuntu 16.04 บนคอมพิวเตอร์ x86 (พร้อม NVIDIA GeForce GPU)

ตรวจสอบไฟล์ไลบรารีที่อยู่ใน /usr/lib/x86_64-linux-gnu

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

หากคุณเห็นลิงก์เสียให้ติดตั้งใหม่ libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

และตรวจสอบห้องสมุดอีกครั้ง


0

ในกรณีของฉัน: ฉันได้ติดตั้ง QT 32 บิต lib ใน Win10 64 บิตและพบข้อผิดพลาดฉันเปลี่ยนเป็น 64 บิตทั้งหมดและผู้สร้าง QT ทำงานได้อย่างราบรื่น


-1

แก้ไขปัญหานี้เมื่อไม่กี่นาทีที่ผ่านมาใน suse เพียงทำตามขั้นตอนต่อไปนี้ด้านล่างและ QTCreator จะทำงานได้ดี

sudo zypper ติดตั้ง - ประเภทรูปแบบ devel_basis

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.