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

Flutter项目执行dart run jni:setup时C编译器无法编译测试程序,报GLIBC版本缺失错误

Flutter项目执行dart run jni:setup时C编译器无法编译测试程序,报GLIBC版本缺失错误

嘿,我看你在执行dart run jni:setup的时候碰到了C编译器的问题,核心原因是Flutter Snap包自带的GLIBC版本和系统GCC插件依赖的版本不匹配,导致链接阶段失败。让我给你几个可行的解决方案:

问题根源

从错误日志里能看到关键报错:

/snap/flutter/current/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so: error loading plugin: /snap/flutter/141/usr/bin/../../lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so)

你的系统GCC 11.4.0的LTO(链接时优化)插件需要GLIBC 2.33,但Flutter Snap包使用的是较旧的GLIBC版本,两者环境隔离导致依赖冲突。

解决方案

方案一:切换到非Snap版本的Flutter(推荐)

Snap包的环境隔离特性很容易引发这类依赖问题,换成官方标准版本能从根源上避免:

  1. 卸载Snap版Flutter:
    sudo snap remove flutter
    
  2. 通过官方脚本安装稳定版Flutter:
    git clone https://github.com/flutter/flutter.git -b stable
    export PATH="$PATH:`pwd`/flutter/bin"
    
  3. 重启终端,验证Flutter版本:
    flutter --version
    
  4. 重新执行JNI setup命令:
    dart run jni:setup -p jni -s src/calculation
    

方案二:禁用LTO链接优化

如果你不想更换Flutter版本,可以尝试关闭LTO,绕过依赖高版本GLIBC的插件:
执行setup时添加CMake参数禁用LTO:

dart run jni:setup -p jni -s src/calculation -D CMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF

方案三:匹配系统GCC和GLIBC版本

如果坚持用Snap版Flutter,可以安装和Snap包GLIBC版本兼容的GCC:

  1. 查看Snap包中的GLIBC版本:
    /snap/flutter/current/usr/lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC
    
  2. 安装对应版本的GCC(比如GCC 9,和Snap包默认版本匹配):
    sudo apt install gcc-9 g++-9
    
  3. 指定CMake使用该版本编译器:
    dart run jni:setup -p jni -s src/calculation -D CMAKE_C_COMPILER=/usr/bin/gcc-9 -D CMAKE_CXX_COMPILER=/usr/bin/g++-9
    

完整错误日志

####@flash:~/Documents/app_dev/test_one$ dart run jni:setup -p jni -s src/calculation

selecting source directories: [src/calculation, /home/####/.pub-cache/hosted/pub.dev/jni-0.7.2/src]

Target newer than source, skipping build.

+ [.dart_tool/jni/jni_native_build_JKXCIO] cmake /home/####/Documents/app_dev/test_one/src/calculation

-- The C compiler identification is GNU 11.4.0

-- Check for working C compiler: /usr/bin/cc

-- Check for working C compiler: /usr/bin/cc -- broken

-- Configuring incomplete, errors occurred!

See also "/home/####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_JKXCIO/CMakeFiles/CMakeOutput.log".

See also "/home/####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_JKXCIO/CMakeFiles/CMakeError.log".

CMake Error at /snap/flutter/141/usr/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake:60 (message):

The C compiler

"/usr/bin/cc"

is not able to compile a simple test program.

It fails with the following output:

Change Dir: /home/#####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_JKXCIO/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/gmake cmTC_fcc09/fast && /usr/bin/gmake -f CMakeFiles/cmTC_fcc09.dir/build.make CMakeFiles/cmTC_fcc09.dir/build

gmake[1]: Entering directory '/home/#####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_JKXCIO/CMakeFiles/CMakeTmp'

Building C object CMakeFiles/cmTC_fcc09.dir/testCCompiler.c.o

/usr/bin/cc    -o CMakeFiles/cmTC_fcc09.dir/testCCompiler.c.o   -c /home/####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_JKXCIO/CMakeFiles/CMakeTmp/testCCompiler.c

Linking C executable cmTC_fcc09

/snap/flutter/141/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_fcc09.dir/link.txt --verbose=1

/usr/bin/cc    -B/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -B/snap/flutter/current/usr/lib/x86_64-linux-gnu -B/snap/flutter/current/lib/x86_64-linux-gnu -B/snap/flutter/current/usr/lib/ -L/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -L/snap/flutter/current/usr/lib/x86_64-linux-gnu -L/snap/flutter/current/lib/x86_64-linux-gnu -L/snap/flutter/current/usr/lib/ -lblkid -lgcrypt -llzma -llz4 -lgpg-error -luuid -lpthread -ldl -lepoxy -lfontconfig -B/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -B/snap/flutter/current/usr/lib/x86_64-linux-gnu -B/snap/flutter/current/lib/x86_64-linux-gnu -B/snap/flutter/current/usr/lib/ -L/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -L/snap/flutter/current/usr/lib/x86_64-linux-gnu -L/snap/flutter/current/lib/x86_64-linux-gnu -L/snap/flutter/current/usr/lib/ -lblkid -lgcrypt -llzma -llz4 -lgpg-error -luuid -lpthread -ldl -lepoxy -lfontconfig  CMakeFiles/cmTC_fcc09.dir/testCCompiler.c.o  -o cmTC_fcc09

/snap/flutter/current/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so: error loading plugin: /snap/flutter/141/usr/bin/../../lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so)

collect2: error: ld returned 1 exit status

gmake[1]: *** [CMakeFiles/cmTC_fcc09.dir/build.make:87: cmTC_fcc09] Error 1

gmake[1]: Leaving directory '/home/####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_JKXCIO/CMakeFiles/CMakeTmp'

gmake: *** [Makefile:121: cmTC_fcc09/fast] Error 2

CMake will not be able to correctly generate this project.

Call Stack (most recent call first):

CMakeLists.txt:8 (project)

Command exited with status code 1

+ [.dart_tool/jni/jni_native_build_JKXCIO] cmake --build .

gmake: *** No targets specified and no makefile found.  Stop.

Command exited with status code 2

+ [.dart_tool/jni/jni_native_build_KGJRRZ] cmake /home/#####/.pub-cache/hosted/pub.dev/jni-0.7.2/src

-- The C compiler identification is GNU 11.4.0

-- Check for working C compiler: /usr/bin/cc

-- Check for working C compiler: /usr/bin/cc -- broken

-- Configuring incomplete, errors occurred!

See also "/home/####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_KGJRRZ/CMakeFiles/CMakeOutput.log".

See also "/home/#####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_KGJRRZ/CMakeFiles/CMakeError.log".

CMake Error at /snap/flutter/141/usr/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake:60 (message):

The C compiler

"/usr/bin/cc"

is not able to compile a simple test program.

It fails with the following output:

Change Dir: /home/####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_KGJRRZ/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/gmake cmTC_c70af/fast && /usr/bin/gmake -f CMakeFiles/cmTC_c70af.dir/build.make CMakeFiles/cmTC_c70af.dir/build

gmake[1]: Entering directory '/home/#####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_KGJRRZ/CMakeFiles/CMakeTmp'

Building C object CMakeFiles/cmTC_c70af.dir/testCCompiler.c.o

/usr/bin/cc    -o CMakeFiles/cmTC_c70af.dir/testCCompiler.c.o   -c /home/#####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_KGJRRZ/CMakeFiles/CMakeTmp/testCCompiler.c

Linking C executable cmTC_c70af

/snap/flutter/141/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c70af.dir/link.txt --verbose=1

/usr/bin/cc    -B/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -B/snap/flutter/current/usr/lib/x86_64-linux-gnu -B/snap/flutter/current/lib/x86_64-linux-gnu -B/snap/flutter/current/usr/lib/ -L/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -L/snap/flutter/current/usr/lib/x86_64-linux-gnu -L/snap/flutter/current/lib/x86_64-linux-gnu -L/snap/flutter/current/usr/lib/ -lblkid -lgcrypt -llzma -llz4 -lgpg-error -luuid -lpthread -ldl -lepoxy -lfontconfig -B/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -B/snap/flutter/current/usr/lib/x86_64-linux-gnu -B/snap/flutter/current/lib/x86_64-linux-gnu -B/snap/flutter/current/usr/lib/ -L/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -L/snap/flutter/current/usr/lib/x86_64-linux-gnu -L/snap/flutter/current/lib/x86_64-linux-gnu -L/snap/flutter/current/usr/lib/ -lblkid -lgcrypt -llzma -llz4 -lgpg-error -luuid -lpthread -ldl -lepoxy -lfontconfig  CMakeFiles/cmTC_c70af.dir/testCCompiler.c.o  -o cmTC_c70af

/snap/flutter/current/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so: error loading plugin: /snap/flutter/141/usr/bin/../../lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so)

collect2: error: ld returned 1 exit status

gmake[1]: *** [CMakeFiles/cmTC_c70af.dir/build.make:87: cmTC_c70af] Error 1

gmake[1]: Leaving directory '/home/####/Documents/app_dev/test_one/.dart_tool/jni/jni_native_build_KGJRRZ/CMakeFiles/CMakeTmp'

gmake: *** [Makefile:121: cmTC_c70af/fast] Error 2

CMake will not be able to correctly generate this project.

Call Stack (most recent call first):

CMakeLists.txt:8 (project)

Command exited with status code 1

+ [.dart_tool/jni/jni_native_build_KGJRRZ] cmake --build .

gmake: *** No targets specified and no makefile found.  Stop.

备注:内容来源于stack exchange,提问作者bot_one

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 11:49:52