arm64平台gem install zookeeper报错解决

在arm64平台下,执行:

gem install zookeeper

报错:

configure: error: cannot guess build type; you must specify one

说明,/var/lib/gems/2.3.0/gems/zookeeper-1.4.11/ext/zkc-3.4.5/c/config.sub文件已经过时,没有包含当前arm64或aarch64的信息,需要更换成新版本,可以从其他的源码包中获取,比如Python2.7的源码包

替换文件之后,手动执行:

./configure --prefix=/var/lib/gems/2.3.0/gems/zookeeper-1.4.11/ext --with-pic --without-cppunit --disable-dependency-tracking --build=aarch64
make

会报错:

/tmp/ccHyPDT3.s:1648: Error: unknown mnemonic `lock' -- `lock xaddl x1,[x0]'

这是因为在一段代码中,直接嵌入了x86的汇编所以在arm平台下会报错,解决方法在https://issues.apache.org/jira/browse/ZOOKEEPER-2760

即找到./src/mt_adaptor.c

按照这里的patch进行修改https://issues.apache.org/jira/secure/attachment/12863764/ZOOKEEPER-2760.patch

最后,修改extconf.rb文件,在找到make和make install,加入:

    Dir.chdir(BUNDLE_PATH) do
      configure = "./configure --prefix=#{HERE} --with-pic --without-cppunit --build=aarch64 --disable-dependency-tracking #{$EXTRA_CONF} 2>&1"
      configure = "env CFLAGS='#{DEBUG_CFLAGS}' #{configure}" if ZK_DEBUG
      
      safe_sh("cp /tmp/config.sub /var/lib/gems/2.3.0/gems/zookeeper-1.4.11/ext/zkc-3.4.5/c/")
      safe_sh(configure)
      safe_sh("rm -f /var/lib/gems/2.3.0/gems/zookeeper-1.4.11/ext/zkc-3.4.5/c/src/mt_adaptor.c")
      safe_sh("cp /tmp/mt_adaptor.c /var/lib/gems/2.3.0/gems/zookeeper-1.4.11/ext/zkc-3.4.5/c/src/")
      safe_sh("make  2>&1")
      safe_sh("make install 2>&1")
    end

修改完成后,执行

cd /var/lib/gems/2.3.0/gems/zookeeper-1.4.11/ext/
ruby  extconf.rb
make install

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值