Fedora 36上Flutter运行报错:无法加载swrast驱动
在Fedora 36上运行Flutter Linux桌面应用时页面空白的问题
执行flutter run后页面空白,调试控制台输出如下错误:
Launching lib/main.dart on Linux in debug mode... libGL error: MESA-LOADER: failed to open swrast: /lib64/libpthread.so.0: version `GLIBC_PRIVATE' not found (required by /snap/flutter/current/usr/lib/x86_64-linux-gnu/dri/../../../../lib/x86_64-linux-gnu/librt.so.1) (search paths :/usr/lib/dri:/snap/flutter/current/usr/lib/x86_64-linux-gnu/dri:, suffix _dri) libGL error: failed to load driver: swrast ** (flutter_mastering:4822): WARNING **: 18:51:11.101: Failed to start Flutter renderer: Unable to create a GL context
已搜索多个相关问题但未找到有效解决方法。
设备信息
- 内核版本:
5.19.6-200.fc36.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 31 17:58:15 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux glxinfo | grep render输出:
GLX_MESA_query_renderer, GLX_MESA_swap_control, GLX_NV_float_buffer, GLX_MESA_query_renderer, GLX_MESA_swap_control, GLX_OML_swap_method, Extended renderer info (GLX_MESA_query_renderer): OpenGL renderer string: AMD Radeon Vega 3 Graphics (raven, LLVM 14.0.0, DRM 3.47, 5.19.6-200.fc36.x86_64) GL_ARB_compute_variable_group_size, GL_ARB_conditional_render_inverted, GL_INTEL_blackhole_render, GL_KHR_blend_equation_advanced, GL_NV_conditional_render, GL_NV_copy_image, GL_NV_depth_clamp, GL_ARB_compute_variable_group_size, GL_ARB_conditional_render_inverted, GL_INGR_blend_func_separate, GL_INTEL_blackhole_render, GL_NV_compute_shader_derivatives, GL_NV_conditional_render, GL_EXT_render_snorm, GL_EXT_robustness, GL_EXT_sRGB_write_control, GL_INTEL_blackhole_render, GL_KHR_blend_equation_advanced, GL_NV_conditional_render, GL_NV_draw_buffers, GL_NV_fbo_color_attachments, GL_OES_element_index_uint, GL_OES_fbo_render_mipmap,
flutter doctor输出:
[✓] Flutter (Channel stable, 3.0.5, on Fedora Linux 36 (Workstation Edition) 5.19.6-200.fc36.x86_64, locale en_US.UTF-8) [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0) [✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome) ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable. [✓] Linux toolchain - develop for Linux desktop [✓] Android Studio (version 2021.2) [✓] VS Code (version 1.71.0) [✓] Connected device (1 available) [✓] HTTP Host Availability ! Doctor found issues in 1 category.
解决方法
问题根源是Snap版本Flutter自带的系统库与Fedora 36的系统库存在版本冲突,以下是可行的解决途径:
1. 替换为官方手动安装版Flutter
- 卸载Snap版Flutter:
sudo snap remove flutter - 从Flutter官方渠道下载对应版本的压缩包,解压到本地目录(如
~/flutter) - 将Flutter的bin目录加入系统PATH:
在~/.bashrc或~/.zshrc中添加:export PATH="$PATH:$HOME/flutter/bin" - 执行
source ~/.bashrc(或对应shell的配置文件)使设置生效 - 重新运行
flutter doctor检查环境,之后再尝试flutter run
2. 临时指定系统库优先级运行
若不想卸载Snap版,可在运行时强制使用系统库:
LD_LIBRARY_PATH=/lib64 flutter run
此命令临时让系统/lib64目录下的库优先加载,规避Snap自带库的冲突问题。
3. 安装32位依赖库(可选)
部分场景下32位库缺失会触发类似错误,执行以下命令安装:
sudo dnf install mesa-libGL.i686 mesa-libGLU.i686
内容的提问来源于stack exchange,提问作者Nyll
相关产品推荐
相关产品推荐

