凸然

解决m1的mac下 执行flutter pub run ffigen 出现"(have ‘arm64’, need ‘x86_64’)"错误

ffigen主要是用来将底层的c/c++的导出函数转成dart能方便调用的方法,用起来挺方便的,之前在windows弄成功过,现在在要在m1的mac下再弄一次,不出意外,果然又碰到问题了。


首先在执行ffigen命令的时候提示找不到llvm相关的库

这个问题直接执行brew install llvm即可。

安装完后,继续执行ffigen命令,又出现错误了.

Invalid argument(s): Failed to load dynamic library '/opt/homebrew/opt/llvm/lib/libclang.dylib': 
dlopen(/opt/homebrew/opt/llvm/lib/libclang.dylib, 0x0001): tried: '/opt/homebrew/opt/llvm/lib/libclang.dylib'
(mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), 

这个m1确实坑挺多的,之前就碰到好多和这相关的问题。先去github仓库找,肯定有其它从碰到过这个问题,搜索了下,果然有
https://github.com/dart-lang/ffigen/issues/323

但仔细看完后发现,解决的办法竟然是要重新安装arm版本的flutter。看了下自己电脑上的dart版本,

❯ file /Users/cxw/dev_tools/flutter/bin/cache/dart-sdk/bin/dart
/Users/cxw/dev_tools/flutter/bin/cache/dart-sdk/bin/dart: Mach-O 64-bit executable x86_64

不过这么做还是不太建议,毕竟基础的开发环境能不动,就尽量不动,好几个生产项目都依赖这个环境。

既然不重装arm版本的flutter,那就安装x86_84的llvm,这样应该也能解决问题。

网上一通搜索,终于找到了mac下的x86_64的llvm

下载完,在pubspec.yaml中配置好llvm库,再次执行flutter pub run ffigen…果然就可以了。




版权声明:本文为凸然网站的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:解决m1的mac下 执行flutter pub run ffigen 出现"(have ‘arm64’, need ‘x86_64’)"错误