我正在尝试使用 sonova 14.4 和我的 ruby 项目在 x86 intel mac 上安装旧版本的 nokogiri (1.6.8.1),但我在捆绑安装或 gem 安装 nokogiri 时遇到问题
xml_document.c:46:25: error: incompatible function pointer types passing 'int (xmlNodePtr, xmlNodePtr, xmlDocPtr)' (aka 'int (struct _xmlNode *, struct _xmlNode *,
struct _xmlDoc *)') to parameter of type 'st_foreach_callback_func *' (aka 'int (*)(unsigned long, unsigned long, unsigned long)')
[-Wincompatible-function-pointer-types]
st_foreach(node_hash, dealloc_node_i, (st_data_t)doc);
^~~~~~~~~~~~~~
/Users/username/.rvm/rubies/ruby-2.7.8/include/ruby-2.7.0/ruby/st.h:141:57: note: passing argument to parameter here
int rb_st_foreach(st_table *, st_foreach_callback_func *, st_data_t);
^
已尝试使用系统库(如 libxml2-dev 和 libxslt1-dev)、安装和更新 xcode 命令行权限等常见修复,但失败了。我也尝试过使用
gem install nokogiri -v '1.6.8.1' -- --with-cflags="-Wno-incompatible-function-pointer-types"
但无济于事。
在 m2 macbook 上也会遇到此错误(也在 sonova 上运行)。我相信这是 xcode 编译 gem 中的 c 文件的问题。
有关更多详细信息,该项目正在 ruby 2.7.8 上运行。经过我自己的尝试和错误,我只能安装nokogiri版本1.11及以上,但我需要使用版本1.6来完成这个项目
任何可能导致解决此问题的帮助或指示将不胜感激! :)
我刚刚遇到了这个问题,运行
brew install llvm@15
为我解决了这个问题。希望有帮助