openSUSE环境Impala编译步骤

native-toolchain编译

  1. 克隆github上Cloudera提供的native-toolchain仓库:
git clone https://github.com/cloudera/native-toolchain.git
  1. 安装系统依赖
zypper install lsb-release,openssl-devel,libffi-devel,bzip2
zypper install --type pattern devel_basis
  1. 执行./buildall.sh,开始编译基础编译工具:GCC、CMake、Binutil等等;
    若编译GCC时失败报错:

在这里插入图片描述

则修改如下代码文件,然后重新执行./buildall.sh:

// source/gcc/bak/gcc-7.5.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
// 注释掉第1150行:
// CHECK_SIZE_AND_OFFSET(ipc_perm, mode);

若编译CMake时失败报错:
在这里插入图片描述

查看cmake_bootstrap.log,若其中存在报错:

unable to initialize decompress status for section .debug_aranges

则进入build/binutils-2.28/bin目录,执行以下操作,然后重新执行./buildall.sh:

mv ld ld.bak
ln -s /usr/bin/ld ld

编译LLVM时,可能出现与GCC相同的报错,需进行类似的修改,注释掉相同的CHECK函数;
python-2.7.16编译完成后,若手动执行/path/to/python -c "import struct"报错No module named _struct,说明python2编译存在问题(原因未知),可通过OS自带python进行规避,执行以下操作:

cd /path/to/python-2.7.16/bin
mv python python.bak
ln -s /usr/bin/python python

Impala编译

正常按照原步骤进行编译,若出现类似如下报错:
在这里插入图片描述

需重编译toolchain中的curl,具体操作:

cd /path/to/native-toolchain/source/curl/
vim build.sh
在wrap ./configure ...这行最后,添加--without-ssl --without-libidn2 --disable-ldap这几个flag:
  wrap ./configure --with-pic --with-openssl --prefix=$LOCAL_INSTALL --without-ssl --without-libidn2 --disable-ldap
cd /path/to/native-toolchain
rm check/curl-7.78.0

在其他toolchain全部编译完成后可以执行./buildall.sh,或执行./build.sh curl单独编译。

若编译impala-shell时存在无法识别的gcc指令的报错,如:

gcc: error: unrecognized command line option ‘-fstack-clash-protection’;

说明GCC环境出现toolchain与系统GCC混用的情况,若系统GCC版本与Impala所需版本(7.5.0)相同,建议使用系统GCC进行规避:

cd toolchain/toolchain-packages-gcc7.5.0/gcc-7.5.0/bin
mv gcc gcc.bak
mv g++ g++.bak
ln -s /usr/bin/gcc gcc
ln -s /usr/bin/g++ g++

若进行了此操作,impala编译完成之后,需要把lib/libstdc++.so* 替换为/usr/lib64/libstdc++.so*(不同环境可能位置不同,可执行find /usr -name libstdc++.so*确认)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值