我正在尝试使用 Sonoma 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 上也会遇到此错误(也在 Sonoma 上运行)。我相信这是 xcode 编译 gem 中的 c 文件的问题。
有关更多详细信息,该项目正在 ruby 2.7.8 上运行。经过我自己的尝试和错误,我只能安装nokogiri版本1.11及以上,但我需要使用版本1.6来完成这个项目
任何可能导致解决此问题的帮助或指示将不胜感激! :)
我遇到了同样的问题,然后通过捆绑器安装 libxslt 和 libxml2 成功,然后一起提供所有参数:
gem install nokogiri -v 1.8.5 -- \
--use-system-libraries \
--with-xslt-dir=/usr/local/opt/libxslt \
--with-xml2-dir=/usr/local/opt/libxml2 \
--with-cflags="-Wno-incompatible-function-pointer-types"
我刚刚遇到了这个问题,运行
brew install llvm@15
为我解决了这个问题。希望有帮助
试试这个命令,经过多次尝试后它有助于安装nokogiri。 “-Wno-int-conversion”在这里玩了把戏。 gem install nokogiri -v '1.6.8.1' --source 'https://artifactory.roving.com/artifactory/gems/' -- --with-cflags="-Wno-inknown-function-pointer-types -Wno -int 转换”