OpenGL Mesa库在ubuntu22.04上的编译

本文详细介绍了在WSL2环境下,如何从YOCTO的bb文件获取Mesa源码,安装必要的依赖,配置和编译过程,以及检查新驱动是否成功安装的方法,最后推荐了相关参考文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译环境

下载源码

我是从yocto的bb文件中得到的下载TAR包的链接:

https://mesa.freedesktop.org/archive/mesa-23.0.3.tar.xz

也可以将整个仓库git clone下来:

git clone https://gitlab.freedesktop.org/mesa/mesa.git

安装依赖包

sudo apt install meson 
sudo apt install glslang-tools
sudo apt install llvm
sudo apt install cmake
sudo apt install libwayland-bin
sudo aptinstall pkgconf
sudo apt install pkgconf
sudo apt-get install libdrm-dev libxxf86vm-dev libxt-dev xutils-dev flex bison xcb libx11-xcb-dev libxcb-glx0 libxcb-glx0-dev xorg-dev libxcb-dri2-0-dev libxcb-xfixes0 libxcb-xfixes0-dev libxcb-dri3-0 libxcb-present0 libpciaccess0 libpng-dev libxcb-keysyms1-dev libxcb-dri3-dev libx11-dev  libxcb-present-dev libxshmfence-dev llvm
sudo apt-get install libxcb-shm0-dev
sudo apt-get install libwayland-dev
sudo apt-get install libwayland-*
sudo apt-get install wayland-protocols
sudo apt-get install libwayland-egl-backend-dev

配置

$ meson setup build/ -D platforms=x11,wayland

编译

$ cd build
$ sudo ninja install

查看编译结果

安装后,不需要重新启动系统,glxinfo|grep OpenGL将会发现系统的MESA驱动已经被更换。

重启后使用的仍然是新编译的MESA驱动


参考文档

Virtualizing GPU Access

Compilation and Installation Using Meson — The Mesa 3D Graphics Library latest documentation

WSL2下安装MESA / OSMESA驱动_thinszx的博客-CSDN博客

结束

### 如何在Ubuntu 22.04上配置和使用OpenGL #### 安装必要的开发 为了能够在Ubuntu 22.04上成功配置并使用OpenGL,需要先安装一系列依赖项。这些包包含了构建图形应用程序所需的头文件和其他资源。 ```bash sudo apt-get update sudo apt-get install build-essential libglu1-mesa-dev freeglut3-dev mesa-common-dev libglew-dev libglm-dev libxrandr-dev doxygen clang libopenexr-dev[^1] ``` 上述命令会安装多个重要的软件包,其中包括`libxrandr-dev`, `doxygen`, 和其他对于OpenGL编程至关重要的工具和支持。 #### 验证OpenGL支持 一旦完成了必需组件的安装,可以通过运行简单的测试程序来验证系统的OpenGL环境是否正常工作。可以编写一段C/C++代码利用GLFW创建窗口,并调用OpenGL函数绘制基本形状。 ```cpp #include <GL/glew.h> #include <GLFW/glfw3.h> int main() { GLFWwindow* window; /* Initialize the library */ if (!glfwInit()) return -1; /* Create a windowed mode window and its OpenGL context */ window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); if (!window) { glfwTerminate(); return -1; } /* Make the window's context current */ glfwMakeContextCurrent(window); glewExperimental = GL_TRUE; // Needed in core profile GLenum err = glewInit(); // Initialize GLEW if (err != GLEW_OK){ printf("Failed to initialize GLEW.\n"); return -1; } while(!glfwWindowShouldClose(window)){ glClear(GL_COLOR_BUFFER_BIT); // Clear screen glBegin(GL_TRIANGLES); glVertex2f(-0.5,-0.5); glVertex2f( 0.5,-0.5); glVertex2f( 0.0, 0.5); glEnd(); /* Swap front and back buffers */ glfwSwapBuffers(window); /* Poll for and process events */ glfwPollEvents(); } glfwDestroyWindow(window); glfwTerminate(); } ``` 这段代码展示了如何初始化GLFW、设置上下文以及渲染一个三角形到屏幕上。如果一切顺利,则说明OpenGL已经正确配置好了。 #### 使用Doxygen生成文档 当涉及到复杂的项目时,良好的API文档是非常有帮助的。通过之前提到过的`doxygen`工具,可以根据源码自动生成HTML或其他格式的帮助手册。 ```bash doxygen -g Doxyfile nano Doxyfile # 修改配置选项 doxygen Doxyfile ``` 这将基于项目的结构自动生产详细的类图、成员列表等功能描述页面。 #### 常见问题排查 有时可能会遇到一些错误提示,比如找不到特定版本的OpenSSL等问题。针对这类情况,建议按照官方指南或是社区论坛上的解决方案进行调整。例如,在某些情况下可能需要手动指定路径或者是重新编译相关以适应当前的操作系统版本[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值