【问题标题】:dyld: lazy symbol binding failed: Symbol not found: _grpc_set_ssl_roots_override_callbackdyld:惰性符号绑定失败:找不到符号:_grpc_set_ssl_roots_override_callback
【发布时间】:2021-03-08 09:59:56
【问题描述】:

Mac Book Air(M1)

操作系统:macOS BigSur(11.2)
Rails 版本:5.2.3
红宝石版本:2.5.3p105
捆绑列表:

  • google-protobuf (3.15.5)
  • googleapis-common-protos-types (1.0.6)
  • grpc (1.36.0)
$ rails c
dyld: lazy symbol binding failed: Symbol not found: _grpc_set_ssl_roots_override_callback
  Referenced from: /Users/[hostname]/.rvm/gems/ruby-2.5.3@square_rpc/gems/grpc-1.36.0/src/ruby/lib/grpc/grpc_c.bundle
  Expected in: flat namespace

dyld: Symbol not found: _grpc_set_ssl_roots_override_callback
  Referenced from: /Users/[hostname]/.rvm/gems/ruby-2.5.3@square_rpc/gems/grpc-1.36.0/src/ruby/lib/grpc/grpc_c.bundle
  Expected in: flat namespace

我已经运行bundle pristine
所以我认为我应该使用支持 M1 的正确版本,如文档所述。

有人知道如何解决这个问题吗?
谢谢。

【问题讨论】:

标签: ruby-on-rails ruby grpc apple-m1


【解决方案1】:

我想我终于可以用简单的方式回答这个问题了。答案就是升级到 Ruby 2.7 并在 Gemfile 中至少包含 grpc 1.38.0

我的理解和解释是,Mac M1 改动的某个地方,早期版本的 grpc 存在问题。维护这个宝石的人从人们那里听到了消息,最终他们能够进行错误修复以解决问题。对于某些人来说,这是在 grpc 1.38.0 中,但对于其他人来说,它最近被列为 1.42.0。

我相信这在几个月前就已经解决了,但问题还有第二部分。那是Ruby的版本。我正在使用 2.6.6 并且仍然遇到问题,即使我正在关注其他人的解决方案并看到它解决了他们的问题的反应。但是,我终于找到了一条评论,暗示该缺陷存在于 Ruby 2.6 中。所以我升级到 2.7.5 和 viola,我看不到这个问题了。

所以我的建议是升级到 ruby​​ 2.7,但可能是 2.6.7 - 2.6.9 也解决了这个链接问题。因此,如果您不想或无法升级到 2.7,也可以尝试这些。

【讨论】:

  • 我可以确认这一点。带有 Ruby 版本 2.7.5 的 grpc 1.42.0 在我的 M1 mac 上运行良好。我试过 Ruby 2.7.1,但它不适用于 grpc 1.42.0。
猜你喜欢
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2016-04-19
  • 1970-01-01
相关资源
最近更新 更多