libgo.so not found
flutter 项目运行安卓版本的时候,Failed to load dynamic library ‘libgo.so’: dlopen failed: library “libgo.so” not found
需要编译 go 模块
cgo: C compiler “aarch64-linux-android33-clang” not found: exec: “aarch64-linux-android33-clang”: executable file not found in $PATH
这个是编译 libgo.so 的时候
这个错误表明在编译 Android 版本的 Go 动态库时找不到 Android NDK 的 C 编译器。让我们来解决这个问题:
安装的话 android studio 就可以
首先确保已经安装了 Android NDK,并设置环境变量:
# 在 .zshrc 或 .bashrc 中添加
export ANDROID_NDK_HOME="$HOME/Library/Android/sdk/ndk/26.1.10909125" # 替换为你的 NDK 路径
export PATH="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin:$PATH" # darwin-x86_64 是 macOS 的路径在编译 Go 代码时,需要设置正确的 CGO 环境变量:
export GOOS=android
export GOARCH=arm64
export CGO_ENABLED=1
export CC=aarch64-linux-android33-clang
export ANDROID_API=33 # 这里的 33 要和你的 clang 版本匹配
go build -buildmode=c-shared -o libgo.so如果你使用的是其他 Android API 级别,需要相应调整编译器名称,比如:
- Android 31: aarch64-linux-android31-clang
- Android 30: aarch64-linux-android30-clang
完整的编译脚本示例:
# 设置 Android NDK 路径
export ANDROID_NDK_HOME="$HOME/Library/Android/sdk/ndk/26.1.10909125" # 修改为你的 NDK 路径
export ANDROID_API=33
# ARM64 架构
export GOOS=android
export GOARCH=arm64
export CGO_ENABLED=1
export CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android${ANDROID_API}-clang
go build -buildmode=c-shared -o libgo.so
# 如果需要其他架构,比如 ARM v7
# export GOARCH=arm
# export CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi${ANDROID_API}-clang
# go build -buildmode=c-shared -o libgo.armeabi-v7a.so检查问题:
# 检查编译器是否存在
ls $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android*
# 检查环境变量
echo $CC
echo $ANDROID_NDK_HOME
fvm zsh 路径问题
fvm 安装的 flutter 如何在 zsh 里找到相关命令,或者配置路径
我来帮你配置 fvm 安装的 Flutter 在 zsh 中的环境变量。
首先打开你的 zsh 配置文件:
nano ~/.zshrc
# 或者
vim ~/.zshrc添加以下配置到 .zshrc 文件中:
# FVM Path
export FVM_HOME="$HOME/fvm" # fvm 的安装路径
export PATH="$FVM_HOME/default/bin:$PATH" # 将 Flutter 添加到 PATH如果你的 fvm 安装在其他位置,需要相应修改路径。常见的默认安装路径有:
- Mac:
$HOME/fvm
- Linux:
$HOME/fvm
- Windows:
%LOCALAPPDATA%/fvm
- Mac:
保存文件后,重新加载 zsh 配置:
source ~/.zshrc
验证配置是否成功:
# 检查 flutter 命令是否可用
flutter --version
# 检查 fvm 命令是否可用
fvm --version如果你想要在特定项目中使用不同版本的 Flutter,可以在项目目录中执行:
fvm use <version> # 例如:fvm use 3.16.0
其他实用的 fvm 命令:
fvm list # 列出已安装的版本
fvm install <version> # 安装特定版本
fvm global <version> # 设置全局默认版本如果还是无法找到命令,可以尝试:
- 确认 fvm 的具体安装位置:
which fvm
- 检查权限:
ls -la $(which fvm)
- 确保路径中没有多余的空格或特殊字符。
需要帮助确认具体的安装路径或遇到其他问题吗?
$FVM_HOME/default/bin 这个是 default 文件夹么,如果没有这个文件夹如何操作
如果没有 default 文件夹,说明你还没有设置默认的 Flutter 版本。让我帮你一步步设置:
首先查看已安装的 Flutter 版本:
fvm list
如果还没有安装任何版本,先安装一个:
fvm install stable # 安装最新稳定版
# 或者安装特定版本
# fvm install 3.16.0设置默认版本(这会创建 default 文件夹):
fvm global stable # 将稳定版设为默认版本
# 或者设置特定版本
# fvm global 3.16.0验证 default 文件夹是否创建成功:
ls $HOME/fvm # 应该能看到 default 文件夹
然后再配置你的 .zshrc:
export FVM_HOME="$HOME/fvm"
export PATH="$FVM_HOME/default/bin:$PATH"重新加载配置:
source ~/.zshrc