use*_*582 10 ruby ruby-on-rails ffi apple-m1
我正在使用“ffi”、“~> 1.9”、
当我尝试运行 Rails 项目时出现此错误
rake aborted!
LoadError: dlopen(/Users/kanye.west/.rbenv/versions/2.6.9/lib/ruby/gems/2.6.0/gems/ffi-1.9.25/lib/ffi_c.bundle, 0x0009): tried: '/Users/kanye.west/.rbenv/versions/2.6.9/lib/ruby/gems/2.6.0/gems/ffi-1.9.25/lib/ffi_c.bundle' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e))) - /Users/kanye.west/.rbenv/versions/2.6.9/lib/ruby/gems/2.6.0/gems/ffi-1.9.25/lib/ffi_c.bundle
/Users/kanye.west/dev/anenta/config/application.rb:14:in `<top (required)>'
/Users/kanye.west/dev/anenta/Rakefile:5:in `require'
/Users/kanye.west/dev/anenta/Rakefile:5:in `<top (required)>'
/Users/kanye.west/.rbenv/versions/2.6.9/bin/bundle:23:in `load'
/Users/kanye.west/.rbenv/versions/2.6.9/bin/bundle:23:in `<main>'
Caused by:
LoadError: cannot load such file -- 2.6/ffi_c
/Users/kanye.west/dev/anenta/config/application.rb:14:in `<top (required)>'
/Users/kanye.west/dev/anenta/Rakefile:5:in `require'
/Users/kanye.west/dev/anenta/Rakefile:5:in `<top (required)>'
/Users/kanye.west/.rbenv/versions/2.6.9/bin/bundle:23:in `load'
/Users/kanye.west/.rbenv/versions/2.6.9/bin/bundle:23:in `<main>'
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
尝试过的方法
gem install --user-install ffi -v '1.9.25' -- --enable-libffi-alloc
gem install ffi -v '1.9.25' -- --with-cflags="-Wno-error=implicit-function-declaration"
gem install ffi -v '1.9.25' --platform=rub
alias gem="arch -x86_64 sudo gem"
CFLAGS="-Wno-error=implicit-function-declaration" RUBY_CONFIGURE_OPTS='--with-readline-dir=/opt/homebrew/opt/readline' gem install ffi -v '1.9.25' -- --with-cflags="-Wno-error=implicit-function-declaration"
Run Code Online (Sandbox Code Playgroud)
Pas*_*zyk 13
您需要libffi使用自制程序安装:
brew install libffi
Run Code Online (Sandbox Code Playgroud)
然后安装应该成功:
gem install ffi
Run Code Online (Sandbox Code Playgroud)
我已经在我的 m1 上的 ruby 2.7.2 上对此进行了测试。
还要确保 libffi 和 ruby/gem 都在同一架构上运行。您可能混合了一些 arm64 和 x86 二进制文件,从长远来看,这将导致大量编译器错误。如果遇到“错误的架构”错误,请尝试在arm/m1上重新安装ruby/homebrew。
供参考:我使用通过 homebrew 安装的 chruby 并2.7.2通过ruby-install. Homebrew 和 ruby 都不使用 Rosetta 仿真,而是在 arm64 上编译。我已经安装了libffi使用brew install,然后安装ffi使用gem install没有问题。
pascal@0xc0fefe ~> which ruby
/Users/pascal/.rubies/ruby-2.7.2/bin/ruby
pascal@0xc0fefe ~> which ruby-install
/opt/homebrew/bin/ruby-install
pascal@0xc0fefe ~> file /Users/pascal/.rubies/ruby-2.7.2/bin/ruby
/Users/pascal/.rubies/ruby-2.7.2/bin/ruby: Mach-O 64-bit executable arm64
pascal@0xc0fefe ~> gem install ffi
Building native extensions. This could take a while...
Successfully installed ffi-1.15.5
Parsing documentation for ffi-1.15.5
Done installing documentation for ffi after 0 seconds
1 gem installed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14427 次 |
| 最近记录: |