Qt ไม่พบ GL / gl.h แต่มี libGL.so อยู่


13

ฉันใช้ Ubuntu 14.04 64 บิต

ข้อผิดพลาดในการคอมไพล์ที่ฉันได้รับคือ:

In file included from ../../../Qt/5.4/gcc_64/include/QtOpenGL/qgl.h:39:0,
                 from ../../../Qt/5.4/gcc_64/include/QtOpenGL/qglshaderprogram.h:37,
                 from ../../../Qt/5.4/gcc_64/include/QtOpenGL/QGLShaderProgram:1,
                 from glwidget.h:5,
                 from glwidget.cpp:1:
../../../Qt/5.4/gcc_64/include/QtGui/qopengl.h:122:21: fatal error: GL/gl.h: No such file or directory
 #  include <GL/gl.h>
                     ^

น่าแปลกที่ฉันดูเหมือนจะติดตั้ง libGL.so อย่างถูกต้องและเชื่อมโยงกับไลบรารี OpenGL ที่ติดตั้งโดยไดรเวอร์การแสดงผล Nvidia 343 ของฉัน (ซึ่งฉันถือว่าติดตั้งไดรเวอร์ OpenGL ด้วย)

$ ls -l /usr/lib | grep -i libgl
lrwxrwxrwx  1 root root           17 Jan 15 12:47 libGLESv1_CM.so -> libGLESv1_CM.so.1
lrwxrwxrwx  1 root root           22 Jan 15 12:47 libGLESv1_CM.so.1 -> libGLESv1_CM.so.343.36
-rwxr-xr-x  1 root root        48248 Jan 15 12:47 libGLESv1_CM.so.343.36
lrwxrwxrwx  1 root root           14 Jan 15 12:47 libGLESv2.so -> libGLESv2.so.2
lrwxrwxrwx  1 root root           19 Jan 15 12:47 libGLESv2.so.2 -> libGLESv2.so.343.36
-rwxr-xr-x  1 root root        62352 Jan 15 12:47 libGLESv2.so.343.36
-rw-r--r--  1 root root          654 Jan 15 12:47 libGL.la
lrwxrwxrwx  1 root root           10 Jan 15 12:47 libGL.so -> libGL.so.1
lrwxrwxrwx  1 root root           15 Jan 15 12:47 libGL.so.1 -> libGL.so.343.36
-rwxr-xr-x  1 root root      1274520 Jan 15 12:47 libGL.so.343.36

ฉันเคยเห็นโพสต์ก่อนหน้านี้ที่แนะนำให้ทำ

sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev

แต่เมื่อฉันลองมันมันลดระดับรุ่น OpenGL ที่รองรับของฉัน (ตามผลลัพธ์โดย glxinfo) เป็น v1.4 นอกจากนี้ฉันไม่แน่ใจว่าทำไมจึงควรช่วย

นี่คือเอาต์พุต glxinfo ของฉัน

$ glxinfo | grep -i opengl
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 970/PCIe/SSE2
OpenGL core profile version string: 4.3.0 NVIDIA 343.36
OpenGL core profile shading language version string: 4.30 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.4.0 NVIDIA 343.36
OpenGL shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:

ขอบคุณ


1
ไลบรารีและไฟล์ส่วนหัวแตกต่างกัน: ระบบของคุณมีmesa-common-devแพ็คเกจติดตั้งหรือไม่
ขับรถเหล็ก

คำตอบ:


19

เกี่ยวกับเอกสาร Qt :

โปรแกรมติดตั้ง Qt สำหรับ Linux สมมติว่าคอมไพเลอร์ C ++, ดีบักเกอร์, สร้างและเครื่องมือการพัฒนาอื่น ๆ จัดทำโดยระบบปฏิบัติการโฮสต์ นอกจากนี้การสร้างแอปพลิเคชัน Qt แบบกราฟิกต้องใช้ไลบรารี OpenGL และส่วนหัวที่ติดตั้ง ลีนุกซ์ส่วนใหญ่จะไม่ติดตั้งสิ่งเหล่านี้ทั้งหมดตามค่าเริ่มต้น, แต่การตั้งค่าสภาพแวดล้อมการพัฒนายังคงไม่ซับซ้อน

ใช้คำสั่งต่อไปนี้เพื่อติดตั้งข้อกำหนดพื้นฐานสำหรับการสร้างแอปพลิเคชัน Qt:

sudo apt-get install build-essential libgl1-mesa-dev

ทำไม? สิ่งนี้จะช่วยอะไรได้บ้าง
ทิม

ถ้าคุณอ่านเอกสารที่ฉันชี้ไปด้านบนคุณจะรู้เหตุผล
ฮาบิบิลลาห์

17

Ah ตามที่ @steeldriver ชี้ให้เห็นส่วนหัวและไลบรารีต่างกันและทำสิ่งต่อไปนี้แก้ไขปัญหา:

sudo apt-get install mesa-common-dev

สิ่งนี้จะติดตั้งส่วนหัวที่จำเป็น


ความจริงก็คือความสนุกที่GL/gl.hมาพร้อมกับ Qt หากคุณติดตั้ง WebEngine ภายใต้qtwebengine/src/3rdparty/chromium/third_party/mesa/src/include/GL/gl.h
Marco Sulla
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.