在为Linux构建Flutter时遇到“GLIBC_2.33 not found”的错误。

11

我想在Ubuntu 22.04 LTS上运行一个flutter应用程序。之前一切正常,但今天在运行应用时出现了以下错误,Flutter SDK无法构建应用程序。

/snap/flutter/130/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/../../../../lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so)
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so

在互联网上搜索后,我发现我需要一个libc的反向版本。如果执行命令 file /snap/flutter/130/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/../../../../lib/x86_64-linux-gnu/libc.so.6
我得到的结果是 /snap/flutter/130/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/../../../../lib/x86_64-linux-gnu/libc.so.6:符号链接到libc-2.31.so
可能我需要安装libc-2.31。但是怎么安装呢?我没有找到任何解决方案。Flutter和Ubuntu都已升级到最新版本。
6个回答

15

这是一个与VSCode相关的轻松问题。 首先,需要移除VSCode:

sudo snap remove code

然后在此处下载vscode的.deb文件:https://code.visualstudio.com/docs/setup/linux

并使用以下命令进行安装:

sudo apt install ./<file>.deb

1
我认为你是正确的。我在GitHub上还有另一个vscode问题,贡献者建议我下载.deb文件并解决了问题。 - Ashraful Alam Shakil
和我一样!这是唯一的解决方案。谢谢。 - Emmanuel
修好了 - 还解决了在 Android 模拟器中启动应用的问题。哦,糟糕。隔离很好,除非它把一切都搞砸了。 - Travis P

7

我遇到了这个问题。我只是卸载并重新安装了flutter。它工作得很好。

snap remove flutter

snap install flutter

flutter doctor

卸载并重新安装对我有用。 我确保遵循了安装说明:sudo snap install flutter --classic - lele1c
这对我来说行不通。我的情况是,在Ubuntu 23.04上添加了对音频播放器的依赖之后,Linux构建就无法正常工作了。 - undefined

4
之前所有重新安装和更改环境变量的方法对我都没有起作用。 在我的Fedora 36上安装了glibc 2.35,但是构建过程中一直出现链接器错误,提示找不到GLIBC_2.33。 经过一番搜索,我发现问题的原因是编译时使用的glibc是由snap安装的旧版本。 如果你仔细看链接器错误,你会发现lib.so.6文件位于snap目录中。如果你进入指定的目录,你会发现那里安装的glibc确实是2.31版本(或其他较旧的版本)。 我通过删除snap版本并按照Flutter下载页面上的手动安装说明解决了这个问题。

在尝试添加audioplayer的依赖项并安装audioplayer所需的一堆apt软件包后,我在Ubuntu 23.04上成功运行。 - undefined

3

尝试检查您的环境变量LD_LIBRARY_PATH。我在主目录下的.bashrc文件中修改了它以完成其他任务,这导致了同样的问题。


3
在互联网上搜索后,我意识到我需要一个libc的反向版本。
不,你不需要这样做。
错误的意思是:您使用的GLIBC版本太旧,不满足您正在尝试加载的系统libgvfsdbus.so的要求。
您的应用程序似乎正在使用位于/snap/flutter/130/lib/x86_64-linux-gnu/libc.so.6的自定义GLIBC版本,该版本比系统安装的GLIBC(可能为2.33或更新版本)更旧。
我不知道Flutter是否强制您使用自定义GLIBC,或者您选择自行使用。无论哪种方式,这似乎都是一个糟糕的主意。
如果您必须为此应用程序使用自定义GLIBC,则不应在其中使用任何系统库(例如/usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so)。

当我运行 ldd --version 时,它显示 ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35。这意味着 GLIBC 2.35 已安装。 - Ashraful Alam Shakil
2
@AshrafulAlamShakil 是的,你的系统已经安装了GLIBC-2.35,但是你的应用程序没有使用它(而是使用了/snap/flutter/130/lib/x86_64-linux-gnu/中的不同版本),这正是问题所在。 - Employed Russian

3
  • 转移到边缘频道,snap refresh flutter --edge
  • 运行 flutter upgrade
  • 删除构建目录 rm -r build/
  • 再次运行应用程序 flutter run -d linux

参考 这里


非常感谢。错误还没有消失,但是应用程序已经构建成功了。之前,由于错误而无法构建。现在,即使错误仍然存在,它也可以构建并运行应用程序,没有任何问题。我使用第二行进行升级。 - Ashraful Alam Shakil
2
对我来说没有改变。 - Desty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接