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

Fedora系统启动Rails服务遇invalid ELF header错误求助

解决nio4r gem的invalid ELF header错误(Fedora+RVM环境)

错误日志

[ben@localhost-live hello_app]$ rails s
=> Booting Puma
=> Rails 7.0.4.3 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.6.5 (ruby 3.2.1-p31) ("Birdie's Version")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 33779
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Exiting
<internal:/usr/local/rvm/rubies/ruby-3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require': /usr/local/rvm/gems/ruby-3.2.1/gems/nio4r-2.5.9/lib/nio4r_ext.so: invalid ELF header - /usr/local/rvm/gems/ruby-3.2.1/gems/nio4r-2.5.9/lib/nio4r_ext.so (LoadError)
    from <internal:/usr/local/rvm/rubies/ruby-3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb>:32:in `require'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/zeitwerk-2.6.7/lib/zeitwerk/kernel.rb:38:in `require'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/nio4r-2.5.9/lib/nio.rb:42:in `<main>'
    from <internal:/usr/local/rvm/rubies/ruby-3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
    from <internal:/usr/local/rvm/rubies/ruby-3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb>:32:in `require'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/zeitwerk-2.6.7/lib/zeitwerk/kernel.rb:38:in `require'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/puma-5.6.5/lib/puma/reactor.rb:24:in `initialize'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/puma-5.6.5/lib/puma/server.rb:244:in `new'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/puma-5.6.5/lib/puma/server.rb:244:in `run'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/puma-5.6.5/lib/puma/single.rb:53:in `run'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/puma-5.6.5/lib/puma/launcher.rb:193:in `run'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/puma-5.6.5/lib/rack/handler/puma.rb:72:in `run'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/rack-2.2.6.4/lib/rack/server.rb:327:in `start'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/railties-7.0.4.3/lib/rails/commands/server/server_command.rb:38:in `start'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/railties-7.0.4.3/lib/rails/commands/server/server_command.rb:143:in `block in perform'
    from <internal:kernel>:90:in `tap'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/railties-7.0.4.3/lib/rails/commands/server/server_command.rb:134:in `perform'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/railties-7.0.4.3/lib/rails/command/base.rb:87:in `perform'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/railties-7.0.4.3/lib/rails/command.rb:48:in `invoke'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/railties-7.0.4.3/lib/rails/commands.rb:18:in `<main>'
    from <internal:/usr/local/rvm/rubies/ruby-3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
    from <internal:/usr/local/rvm/rubies/ruby-3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
    from /usr/local/rvm/gems/ruby-3.2.1/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb>:32:in `require'
    from bin/rails:4:in `<main>'
[ben@localhost-live hello_app]$ 

解决方法

  • 重新编译nio4r本地扩展:错误根源是预编译的.so文件和当前系统/Ruby环境不兼容,执行以下命令:
    # 卸载现有nio4r
    gem uninstall nio4r
    # 重新安装(自动编译适配当前环境的扩展)
    bundle install
    # 或直接重新 pristine 该gem
    gem pristine nio4r
    
  • 校验RVM环境一致性:确保当前使用的Ruby版本与gem安装路径匹配:
    rvm use ruby-3.2.1
    gem env
    
    检查输出中的RUBY VERSION和INSTALLATION DIRECTORY是否对应。
  • 安装Fedora编译依赖:确保有编译本地扩展的工具链:
    sudo dnf install gcc ruby-devel make
    
  • 清理缓存:避免旧缓存干扰:
    bin/rails tmp:clear
    rm -rf ~/.rvm/gems/ruby-3.2.1/cache/nio4r-*.gem
    

内容的提问来源于stack exchange,提问作者Benjamints

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:25:19