You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04/20.04启动Flutter应用提示GLIBC版本缺失求解决

Flutter应用在Ubuntu 18.04/20.04启动时缺失GLIBC版本的问题解决

问题背景

我在Linux Mint 21.2上构建了Flutter发布版应用,该应用可在Ubuntu 22.04正常运行,但在Ubuntu 18.04和20.04系统中启动时出现GLIBC版本缺失错误,具体错误信息如下:

./dkc: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./dkc)
./dkc: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /home/alex/Рабочий стол/Linux release 20231207/lib/libsqlite3_flutter_libs_plugin.so)
./dkc: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /home/alex/Рабочий стол/Linux release 20231207/lib/libsqlite3_flutter_libs_plugin.so)
./dkc: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/alex/Рабочий стол/Linux release 20231207/lib/libsqlite3_flutter_libs_plugin.so)
./dkc: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/alex/Рабочий стол/Linux release 20231207/lib/libsqlite3_flutter_libs_plugin.so)

我的pubspec.yaml依赖配置如下:

environment:
  sdk: ">=3.0.5 <4.0.0"

dependencies:
  flutter:
    sdk: flutter

  connectivity_plus: ^5.0.2
  cupertino_icons: ^1.0.6
  darq: ^2.0.0
  device_info_plus: ^9.1.1
  dio: ^5.4.0
  docx_template: ^0.4.0
  drift: ^2.14.1
  dropdown_button2: ^2.3.9
  excel: ^4.0.0
  file_picker: ^6.1.1
  flutter_window_close: ^1.0.0
  get: ^4.6.6
  intl: ^0.19.0
  package_info_plus: ^5.0.1
  package_rename: ^1.5.0
  path: ^1.8.3
  path_provider: ^2.1.1
  pdf: ^3.10.6
  printing: ^5.11.1
  sqlite3_flutter_libs: ^0.5.18

dev_dependencies:
  flutter_test:
    sdk: flutter

  build_runner: ^2.4.7
  drift_dev: ^2.14.1
  flutter_launcher_icons: ^0.13.1
  flutter_lints: ^3.0.1

Ubuntu 18.04中执行apt policy libc6的结果如下:

apt policy libc6
libc6:
  Установлен: 2.27-3ubuntu1.6
  Кандидат:   2.27-3ubuntu1.6
  Таблица версий:
 *** 2.27-3ubuntu1.6 500
        500 http://ru.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     2.27-3ubuntu1.5 500
        500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
     2.27-3ubuntu1 500
        500 http://ru.archive.ubuntu.com/ubuntu bionic/main amd64 Packages

我尝试更新libc6但未找到可用的新版本,也参考了相关教程但问题仍未解决,请问该如何解决这些错误?

解决方案

1. 在目标最低版本系统上构建(最可靠)

GLIBC的版本依赖是编译时绑定的,在Ubuntu 18.04(或兼容的旧版本系统)上构建应用,编译出的二进制会自动链接到该系统的GLIBC版本,自然能在Ubuntu 18.04、20.04、22.04上运行。
如果不想在物理机安装旧系统,可以用Docker容器实现:

# 拉取Ubuntu 18.04镜像
docker pull ubuntu:18.04
# 启动交互式容器,挂载本地应用目录到容器内
docker run -it -v /本地应用目录:/app ubuntu:18.04 /bin/bash
# 在容器内安装Flutter构建所需依赖
apt update && apt install -y git curl clang cmake ninja-build pkg-config libgtk-3-dev
# 安装Flutter稳定版并配置环境变量
git clone https://github.com/flutter/flutter.git -b stable
export PATH="$PATH:/flutter/bin"
# 进入应用目录构建发布版
cd /app
flutter build linux --release

2. 降级高依赖版本的库

错误日志显示libsqlite3_flutter_libs_plugin.so是主要的高版本GLIBC需求来源,尝试降级sqlite3_flutter_libs到更早的版本:

  • 修改pubspec.yaml中的sqlite3_flutter_libs版本为^0.5.10(或更早的稳定版),执行flutter pub get后重新构建应用;
  • 可查看该库的版本历史,选择明确兼容旧GLIBC的版本。

3. 尝试静态编译

Flutter Linux应用默认是动态链接,尝试启用静态编译(注意并非所有依赖都支持静态链接):

  • 编辑linux/CMakeLists.txt,在target_link_libraries配置中添加-static参数;
  • 或者尝试使用flutter build linux --release --static命令(该参数需Flutter 3.10+版本支持,需测试兼容性)。

4. 手动打包所需GLIBC库(临时方案,不推荐)

从Linux Mint 21.2系统中复制所需的高版本GLIBC库(libc.so.6、libm.so.6等)到应用的lib目录,运行时指定库加载路径:

LD_LIBRARY_PATH=./lib ./dkc

这种方法可能引发其他运行时兼容性问题,仅作为临时应急方案。

内容的提问来源于stack exchange,提问作者Alexander Vinogradov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 02:04:56