Ubuntu22.04平台安装mesa

1,环境准备

1,在Ubuntu22.04的环境下编译安装Mesa22版本的全过程。


2,以下面编译选项为依据:
meson build -Degl=true --buildtype debug -Dplatforms=x11 -Dgallium-drivers=swrast


3,编译mesa22版本时依赖的所有依赖库的顺序:

sudo apt install meson

sudo apt-get install pkg-config

sudo apt-get install cmake

sudo apt-get install zlib1g-dev

sudo apt-get install libzstd-dev

sudo apt-get install libexpat1-dev

sudo apt install libdrm-dev

sudo apt install llvm

sudo apt install libelf-dev

sudo apt install valgrind

sudo apt install bison

sudo apt install flex


如果上面的编译选项需要支持wayland平台,比如 meson build -Degl=true --buildtype debug -Dplatforms=x11,wayland -Dgallium-drivers=swrast
编译到此处时还需要安装wayland协议相关的依赖库。包括以下3个:wayland-scanner,wayland-protocol,wayland-egl-backend
(1)sudo apt install libwayland-dev
(2)wayland-protocol 没有找到直接解决的命令,采样的是源码编译的方式。github上下载 wayland-protocols库的源码, meson build 和 ninja -C build install 可解决该依赖项。
(3)sudo apt install libwayland-egl-backend-dev 


sudo apt install libx11-dev

sudo apt install libxext-dev

sudo apt install libxfixes-dev

sudo apt install libxcb-glx0-dev
sudo apt install libxcb-shm0-dev
sudo apt install libx11-xcb-dev
sudo apt install libxcb-dri2-0-dev
sudo apt install libxcb-dri3-dev
sudo apt install libxcb-present-dev
sudo apt install libxshmfence-dev

sudo apt install libxxf86vm-dev

sudo apt install libxrandr-dev

至此,可以解决上面的所有依赖项,完成mesa源码的编译。
 

2, mesa编译过程

(1) 下载源码

sudo apt install meson

meson build -Degl=true --buildtype debug -Dplatforms=x11 -Dgallium-drivers=swrast

meson build -Degl=true --buildtype debug -Dplatforms=x11,wayland -Dgallium-drivers=swrast

meson build --reconfigure -Degl=true --buildtype debug -Dplatforms=x11,wayland -Dgallium-drivers=swrast

(2)编译成功

meson build 成功时的打印:

WARNING: Library target 'EGL' has 'name_prefix' set. Compilers may not find it from its '-lEGL' linker flag in the 'egl.pc' pkg-config file.
WARNING: Library target 'EGL' has 'name_prefix' set. Compilers may not find it from its '-lEGL' linker flag in the 'egl-uninstalled.pc' pkg-config file.
Message: Configuration summary:
        
        prefix:          /usr/local
        libdir:          lib/x86_64-linux-gnu
        includedir:      include
        
        OpenGL:          yes (ES1: yes ES2: yes)
        OSMesa:          no
        
        DRI platform:    drm
        DRI drivers:     no
        DRI driver dir:  /usr/local/lib/x86_64-linux-gnu/dri
        
        GLX:             DRI-based
        
        EGL:             yes
        EGL drivers:     builtin:egl_dri2 builtin:egl_dri3
        EGL/Vulkan/VL platforms:   x11 surfaceless drm xcb
        GBM:             yes
        GBM backends path: /usr/local/lib/x86_64-linux-gnu/gbm
        
        Vulkan drivers:  amd intel swrast
        Vulkan ICD dir:  share/vulkan/icd.d
        
        llvm:            yes
        llvm-version:    13.0.1
        
        Gallium drivers: swrast
        Gallium st:      mesa
        HUD lmsensors:   no
        
        Shared-glapi:    yes
        
        Perfetto:        no
        Perfetto ds:     auto

Build targets in project: 193
NOTICE: Future-deprecated features used:
 * 0.55.0: {'ExternalProgram.path'}
 * 0.56.0: {'meson.source_root'}

mesa 22.1.2

  User defined options
    buildtype      : debug
    egl            : true
    gallium-drivers: swrast
    platforms      : x11

Found ninja-1.10.1 at /usr/bin/ninja

(3)安装成功

ninja -C build install
ninja: Entering directory `build'
[1/2] Installing files.
Installation failed due to insufficient permissions.
Attempting to use polkit to gain elevated privileges...
Installing src/mapi/shared-glapi/libglapi.so.0.0.0 to /usr/local/lib/x86_64-linux-gnu
Installing symlink pointing to libglapi.so.0.0.0 to /usr/local/lib/x86_64-linux-gnu/libglapi.so.0
Installing symlink pointing to libglapi.so.0 to /usr/local/lib/x86_64-linux-gnu/libglapi.so
Installing src/mapi/es1api/libGLESv1_CM.so.1.1.0 to /usr/local/lib/x86_64-linux-gnu
Installing symlink pointing to libGLESv1_CM.so.1.1.0 to /usr/local/lib/x86_64-linux-gnu/libGLESv1_CM.so.1
Installing symlink pointing to libGLESv1_CM.so.1 to /usr/local/lib/x86_64-linux-gnu/libGLESv1_CM.so
Installing src/mapi/es2api/libGLESv2.so.2.0.0 to /usr/local/lib/x86_64-linux-gnu
Installing symlink pointing to libGLESv2.so.2.0.0 to /usr/local/lib/x86_64-linux-gnu/libGLESv2.so.2
Installing symlink pointing to libGLESv2.so.2 to /usr/local/lib/x86_64-linux-gnu/libGLESv2.so
Installing src/intel/vulkan/intel_icd.x86_64.json to /usr/local/share/vulkan/icd.d
Installing src/intel/vulkan/libvulkan_intel.so to /usr/local/lib/x86_64-linux-gnu
Installing src/amd/vulkan/libvulkan_radeon.so to /usr/local/lib/x86_64-linux-gnu
Installing src/amd/vulkan/radeon_icd.x86_64.json to /usr/local/share/vulkan/icd.d
Installing src/gbm/libgbm.so.1.0.0 to /usr/local/lib/x86_64-linux-gnu
Installing symlink pointing to libgbm.so.1.0.0 to /usr/local/lib/x86_64-linux-gnu/libgbm.so.1
Installing symlink pointing to libgbm.so.1 to /usr/local/lib/x86_64-linux-gnu/libgbm.so
Installing src/gallium/targets/dri/libgallium_dri.so to /usr/local/lib/x86_64-linux-gnu/dri
Installing src/gallium/targets/lavapipe/libvulkan_lvp.so to /usr/local/lib/x86_64-linux-gnu
Installing src/gallium/targets/lavapipe/lvp_icd.x86_64.json to /usr/local/share/vulkan/icd.d
Installing src/glx/libGL.so.1.2.0 to /usr/local/lib/x86_64-linux-gnu
Installing symlink pointing to libGL.so.1.2.0 to /usr/local/lib/x86_64-linux-gnu/libGL.so.1
Installing symlink pointing to libGL.so.1 to /usr/local/lib/x86_64-linux-gnu/libGL.so
Installing src/egl/libEGL.so.1.0.0 to /usr/local/lib/x86_64-linux-gnu
Installing symlink pointing to libEGL.so.1.0.0 to /usr/local/lib/x86_64-linux-gnu/libEGL.so.1
Installing symlink pointing to libEGL.so.1 to /usr/local/lib/x86_64-linux-gnu/libEGL.so
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/KHR/khrplatform.h to /usr/local/include/KHR
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES/egl.h to /usr/local/include/GLES
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES/gl.h to /usr/local/include/GLES
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES/glext.h to /usr/local/include/GLES
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES/glplatform.h to /usr/local/include/GLES
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES2/gl2.h to /usr/local/include/GLES2
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES2/gl2ext.h to /usr/local/include/GLES2
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES2/gl2platform.h to /usr/local/include/GLES2
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES3/gl3.h to /usr/local/include/GLES3
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES3/gl31.h to /usr/local/include/GLES3
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES3/gl32.h to /usr/local/include/GLES3
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES3/gl3ext.h to /usr/local/include/GLES3
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GLES3/gl3platform.h to /usr/local/include/GLES3
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GL/gl.h to /usr/local/include/GL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GL/glcorearb.h to /usr/local/include/GL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GL/glext.h to /usr/local/include/GL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GL/glx.h to /usr/local/include/GL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GL/glxext.h to /usr/local/include/GL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/EGL/egl.h to /usr/local/include/EGL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/EGL/eglext.h to /usr/local/include/EGL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/EGL/eglplatform.h to /usr/local/include/EGL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/EGL/eglmesaext.h to /usr/local/include/EGL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/EGL/eglextchromium.h to /usr/local/include/EGL
Installing /home/jyc/01_code/mesa-mesa-22.1.2/include/GL/internal/dri_interface.h to /usr/local/include/GL/internal
Installing /home/jyc/01_code/mesa-mesa-22.1.2/src/gbm/main/gbm.h to /usr/local/include
Installing /home/jyc/01_code/mesa-mesa-22.1.2/src/util/00-mesa-defaults.conf to /usr/local/share/drirc.d
Installing /home/jyc/01_code/mesa-mesa-22.1.2/build/meson-private/glesv1_cm.pc to /usr/local/lib/x86_64-linux-gnu/pkgconfig
Installing /home/jyc/01_code/mesa-mesa-22.1.2/build/meson-private/glesv2.pc to /usr/local/lib/x86_64-linux-gnu/pkgconfig
Installing /home/jyc/01_code/mesa-mesa-22.1.2/src/amd/vulkan/00-radv-defaults.conf to /usr/local/share/drirc.d
Installing /home/jyc/01_code/mesa-mesa-22.1.2/build/meson-private/gbm.pc to /usr/local/lib/x86_64-linux-gnu/pkgconfig
Installing /home/jyc/01_code/mesa-mesa-22.1.2/build/meson-private/dri.pc to /usr/local/lib/x86_64-linux-gnu/pkgconfig
Installing /home/jyc/01_code/mesa-mesa-22.1.2/build/meson-private/egl.pc to /usr/local/lib/x86_64-linux-gnu/pkgconfig
Installing /home/jyc/01_code/mesa-mesa-22.1.2/build/meson-private/gl.pc to /usr/local/lib/x86_64-linux-gnu/pkgconfig
Running custom install script '/usr/bin/python3 /home/jyc/01_code/mesa-mesa-22.1.2/bin/install_megadrivers.py /home/jyc/01_code/mesa-mesa-22.1.2/build/src/gallium/targets/dri/libgallium_dri.so /usr/local/lib/x86_64-linux-gnu/dri swrast_dri.so kms_swrast_dri.so'

<think>好的,我需要帮用户在Ubuntu 22.04安装LinuxCNC。首先,我应该回忆一下用户提供的引用内容。根据引用[3],用户提到的是在Ubuntu 12.04上通过源码安装LinuxCNC,并给出了官方文档链接。但用户现在需要的是Ubuntu 22.04安装方法,所以可能需要参考最新的官方文档。 首先,我需要确认LinuxCNC的官方安装指南是否有针对Ubuntu 22.04的说明。由于Ubuntu 22.04比较新,可能官方文档还没有完全更新,但通常开源项目会提供从源码编译的步骤。根据引用[3]中的链接,用户可能需要访问http://www.linuxcnc.org/docs/devel/html/code/building-linuxcnc.html查看最新的编译指南。 接下来,安装依赖项是关键步骤。Ubuntu不同版本的包管理可能有所不同,所以需要确认依赖包名称是否在22.04中可用。可能需要使用apt-get安装必要的构建工具和库,比如build-essential、autoconf、libtool等。 然后,从源码编译通常包括配置、编译和安装步骤。用户可能需要运行autogen.sh、configure、make和sudo make install这些命令。同时,需要注意权限问题,可能需要使用sudo。 安装完成后,配置实时内核可能是必要的,因为LinuxCNC需要实时性能。Ubuntu 22.04可能默认使用较新的内核版本,需要检查是否支持实时补丁,或者是否有预编译的实时内核包可用。如果不行,可能需要手动编译实时内核,这可能比较复杂,需要详细指导用户。 最后,验证安装是否成功,运行LinuxCNC的测试命令或启动图形界面。如果遇到问题,可能需要检查日志或依赖项是否全部安装正确。 此外,用户提供的其他引用如[1]、[2]、[4]虽然涉及Ubuntu的其他安装教程,但可能对解决依赖或配置环境有帮助,比如安装VNC或DNS服务器可能不相关,但处理依赖包的经验可以借鉴。 需要提醒用户注意,由于Ubuntu 22.04较新,可能会遇到依赖包版本不兼容或文档未及时更新的问题,建议查看社区论坛或官方支持渠道获取最新帮助。同时,编译安装可能存在风险,操作前建议备份系统或使用虚拟机。</think>### 如何在 Ubuntu 22.04安装 LinuxCNC #### 步骤 1: 安装依赖项 首先需要安装编译和运行 LinuxCNC 所需的依赖库和工具。 执行以下命令: ```bash sudo apt-get update sudo apt-get install -y build-essential autoconf libtool git \ libudev-dev libmodbus-dev libboost-python-dev python3-dev \ tcl-dev tk-dev bwidget libxaw7-dev libreadline-dev \ libssl-dev libgl1-mesa-dev libglu1-mesa-dev ``` #### 步骤 2: 下载源码 从官方 Git 仓库克隆 LinuxCNC 源码: ```bash git clone https://github.com/LinuxCNC/linuxcnc.git cd linuxcnc ``` #### 步骤 3: 配置和编译 运行自动配置脚本并编译: ```bash ./autogen.sh ./configure --with-realtime=uspace make -j$(nproc) sudo make setuid ``` #### 步骤 4: 安装实时内核(可选但推荐) LinuxCNC 对实时性能要求较高,建议安装实时内核: ```bash sudo apt-get install linux-image-rt-raspi # 根据架构选择合适的内核包 # 或手动编译实时内核(需参考官方文档[^3]) ``` #### 步骤 5: 验证安装 启动 LinuxCNC 测试环境: ```bash linuxcnc ``` 若成功启动图形界面,则表示安装完成。 #### 注意事项 1. **兼容性问题**:Ubuntu 22.04 默认使用较新的库版本(如 Python 3.10),需确保依赖项版本兼容。 2. **实时内核配置**:若未安装实时内核,部分功能可能受限,建议参考 [LinuxCNC 实时设置指南](http://linuxcnc.org/docs/devel/html/install/rt-preempt.html)[^3]。 3. **用户权限**:运行 `sudo make setuid` 是为提升权限以访问硬件设备。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值