Biên dịch chương trình OpenGL (Thiếu GL / gl.h)


50

Tôi là một noob Linux / Ubuntu hoàn chỉnh, vì vậy tôi xin lỗi vì bất kỳ phần ngớ ngẩn nào của câu hỏi này hoặc những câu hỏi tiếp theo.

Tôi đang cố gắng để có được một chương trình mà nhóm lớp kỹ thuật phần mềm của tôi đã viết trên máy tính ở nhà của tôi. Ở trường, chúng tôi có Linux, và nó sẽ biên dịch và chạy tốt ở đó. Tôi đã tải xuống VMWare, cài đặt Ubuntu trên máy ảo và hiện đang cố gắng mở chương trình của mình.

Tuy nhiên, khi tôi cố chạy tệp make của mình, tôi gặp lỗi thông báo

gcc -I../include -pthread -O1 -c rain.c
In file included from rain.c:19:0:
../include/GL/glfw.h:176:21: fatal error: GL/gl.h: No such file or directory
compilation terminated.
make: *** [rain.o] Error 1

Có ai tình cờ biết tại sao nó không thể tìm thấy tập tin này, khi nó có thể trên máy tính của trường tôi không? Và tôi cần phải làm gì để tải xuống hoặc tải nó đúng chỗ?

Câu trả lời:


83

Tôi đoán bạn không có bất cứ gói dev nào cung cấp gl.h. apt-filelà công cụ dòng lệnh để sử dụng.

Trước tiên, hãy chắc chắn rằng nó được cập nhật:

apt-file update

Bây giờ bạn có thể viết một tìm kiếm để trả lời "gói nào cung cấp tệp gl.h?"

apt-file search "gl.h"

Tôi không có hộp ubfox ngay bây giờ để kiểm tra, nhưng tôi đoán kết quả sẽ giống như mesa-dev hoặc opengl-dev.

Khi bạn biết gói nào cung cấp "gl.h", (hãy giả vờ kết quả từ tệp apt là "libmesa-dev"), cài đặt nó:

apt-get install libmesa-dev

Thông tin thêm về họ lệnh apt: https://help.ubfox.com/community/AptGet/Howto


Cảm ơn đã giúp đỡ. Tôi đã thử những gì bạn đề xuất và cập nhật bài viết gốc với đầu ra của tìm kiếm.
Hiếm khi

Quyết định chỉ chơi xung quanh với nó và tải xuống gói mesa-common-dev. Sau đó, tôi quản lý để điều hướng đến thư mục usr / include / GL và thấy rằng nó ở đó. Tôi đã di chuyển chỉ sao chép / dán nó vào thư mục dự án của tôi và nó dường như hoạt động. Nhưng sau đó, dự án của tôi đã báo lỗi rằng nó cần một thư mục "glu.h", vì vậy tôi đã tải xuống gói libcgal-dev và làm điều tương tự với bản sao / dán. Sau khi đặt nó vào đúng thư mục và chạy lệnh make, dự án sẽ biên dịch và sẽ chạy. Vì vậy, cảm ơn bạn rất nhiều vì sự giúp đỡ. Bây giờ tôi chỉ cần làm cho đồ họa chậm lại. :)
Hiếm khi

Vui mừng bạn đã xây dựng để làm việc! Bản sao / dán của bạn là nhanh và bẩn, nhưng đúng, bao gồm của bạn có thể sai. Tôi không biết nhiều về c ++, nhưng gặp vấn đề tương tự khi biên dịch một số gói từ nguồn. Giải pháp, iirc, giống như thay đổi #include <gl.h>thành #include<gl/gl.h>.
djeikyb

21
Oh, người đàn ông cảm ơn bạn rất nhiều vì đã dạy tôi câu cá thay vì chỉ cho tôi tên của gói!
Brian Cain

2
Cảm ơn thông tin về apt-file. Về gói yêu cầu cho GL / gl.h, đó là: mesa-common-dev (ít nhất là cho Ubuntu 16.04)
ElazarR

36

Để GL/gl.hsử dụng:

sudo apt install mesa-common-dev

Bạn cũng có thể tìm thấy những điều hữu ích, vì, nói , GL/glu.h:

sudo apt install libglu1-mesa-dev freeglut3-dev

Bạn cũng có thể muốn bao gồmlibglfw3-dev libgles2-mesa-dev
rustyx

1

Bạn cũng có thể xây dựng glproto ( liên kết ), libdrm ( liên kết ) và sau đó là mesa ( liên kết ) từ nguồn. Mặc dù nhiều gói khác có thể chứa tệp tiêu đề này, nhưng điều quan trọng là phải đi đến nguồn. Điều này sẽ giảm dung lượng bộ nhớ cho các cài đặt của bạn và đảm bảo bạn có phiên bản mới nhất và / hoặc lớn nhất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.