kudu:记一次根据官方文档编译kudu的失败经历

前言

本文并没有介绍如何安装kudu,而是记录了根据官方文档构建kudu时的手稿,根据官方文档构建kudu需要解决大量的依赖问题,我弄了将近一整天了,最后放弃了(我太菜了,连安装都安装不上...)。。。最后选择到cdh官网下载kudu的rpm包进行安装,安装成功的步骤在另一篇博客中介绍。

使用源码构建Kudu

要从源代码构建Kudu,需要RHEL或CentOS 6.6或更高版本。要在7.0之前的版本上构建,必须安装Red Hat Developer Toolset(以便访问具有C ++ 11功能的编译器)。

1.如果未安装必备软件,请安装它们。

如果安装时报错,提示尝试其他镜像,可尝试修改yum源,参考:更换yum源

  sudo yum install autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \
  cyrus-sasl-plain flex gcc gcc-c++ gdb git java-1.8.0-openjdk-devel \
  krb5-server krb5-workstation libtool make openssl-devel patch \
  pkgconfig redhat-lsb-core rsync unzip vim-common which

2.如果在7.0之前的RHEL或CentOS上构建,请安装Red Hat Developer Toolset。

官网提供的网址由于服务调整,无法下载对应rpm包,网上也没有找到资源,所以后面产生的大量依赖缺失以及gcc版本太低都是由于这个原因导致的。

我安装的时候提示doxygen版本过低,需要重新安装高版本的doxygen,以下是doxygen安装方式,如果没有报错的话,可省略这步。

安装doxygen时提示cmake版本太低,以下是安装cmake的方式,如果没有提示报错的话可以忽略:

#移除自带cmake
sudo yum remove cmake cmake-data

#下载新版本源码并解压
wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz
tar -zxvf cmake-3.9.2.tar.gz

#进入解压出的目录编译
cd cmake-3.9.2
./configure
make && make install

#创建软连接
ln -s ./bin/* /usr/bin/

安装BISON


wget http://ftp.gnu.org/gnu/bison/bison-2.6.4.tar.gz
tar -xvzf bison-2.7.tar.gz 
cd bison-2.6.4
./configure
make && make install

安装qt4

下载qt4安装包https://download.qt.io/archive/qt/4.8/4.8.4/qt-everywhere-opensource-src-4.8.4.tar.gz

将安装包上传到linux并解压

#解压
tar zxvf qt-everywhere-opensource-src-4.8.5.tar.gz


#进入解压后的目录进行配置
cd qt-everywhere-opensource-src-4.8.5
./configure --prefix=/usr/local

#根据提示选择开源版并接受
o
yes

#根据提示gmake、gmake install
gmake
gmake install

如果doxygen在make时报如下错误:

/install-package/doxygen/src/linkedmap.h: 在成员函数‘T* LinkedMap<T>::add(const char*, Args&& ...)’中:
/install-package/doxygen/src/linkedmap.h:64:19: 错误:‘make_unique’不是‘std’的成员
         Ptr ptr = std::make_unique<T>(k,std::forward<Args>(args)...);
                   ^
/install-package/doxygen/src/linkedmap.h:64:37: 错误:expected primary-expression before ‘>’ token
         Ptr ptr = std::make_unique<T>(k,std::forward<Args>(args)...);
                                     ^
/install-package/doxygen/src/linkedmap.h:64:65: 错误:expected ‘)’ before ‘...’ token
         Ptr ptr = std::make_unique<T>(k,std::forward<Args>(args)...);
                                                                 ^
/install-package/doxygen/src/linkedmap.h:64:68: 错误:参数包未能在‘...’中被展开:
         Ptr ptr = std::make_unique<T>(k,std::forward<Args>(args)...);
                                                                    ^
/install-package/doxygen/src/linkedmap.h:64:68: 附注:       ‘args’
/install-package/doxygen/src/linkedmap.h:64:68: 附注:       ‘Args’
/install-package/doxygen/src/linkedmap.h: 在成员函数‘bool LinkedMap<T>::del(const char*)’中:
/install-package/doxygen/src/linkedmap.h:80:92: 错误:形参声明为‘auto’
         auto vecit = std::find_if(m_entries.begin(),m_entries.end(),[obj=it->second](auto &el) { return el.get()==obj; });
                                                                                            ^
/install-package/doxygen/src/linkedmap.h: 在 lambda 函数中:
/install-package/doxygen/src/linkedmap.h:80:105: 错误:‘el’在此作用域中尚未声明
         auto vecit = std::find_if(m_entries.begin(),m_entries.end(),[obj=it->second](auto &el) { return el.get()==obj; });
                                                                                                         ^
make[2]: *** [vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParser.cc.o] 错误 1
make[1]: *** [vhdlparser/CMakeFiles/vhdlparser.dir/all] 错误 2

原因是gcc版本太低,要求gcc版本大于6.2

#查看gcc版本
gcc -v

#如果小于6.2,请参照以下步骤进行安装
#下载
wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
#或者
wget http://mirror.hust.edu.cn/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz

#解压
tar -xzvf gcc-9.1.0.tar.gz
#进入解压后的目录
cd gcc-9.1.0

#执行download_prerequisites脚本,自动下载依赖,如果长时间没有反应,说明后台正在下载,属于正常现象。
./contrib/download_prerequisites

#以上命令如果报错
#sha512sum: 警告:1 个校验和不匹配
#error: Cannot verify integrity of possibly corrupted file gmp-6.1.0.tar.bz2
#是由于网络问题,下载失败,可以尝试手动下载报错文件并放到gcc-9.1.0目录下
#下载地址ftp://gcc.gnu.org/pub/gcc/infrastructure/
#如果报错解压失败,tar: Error is not recoverable: exiting now
#error: Cannot extract package from gmp-6.1.0.tar.bz2
#需要安装bzip2
yum -y install bzip2

#然后进行编译
mkdir temp
cd temp
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j4

#如果make的时候报错,尝试安装autogen
yum install autogen

make install

#安装之后执行 gcc -v 查看版本

报错glibc

../../thirdparty/installed/common/bin/cmake: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.17' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libcrypto.so.10: version `OPENSSL_1.0.2' not found (required by ../../thirdparty/installed/common/bin/cmake)

到以下地址中下载对应的包进行编译安装。

http://ftp.gnu.org/gnu/glibc/

http://ftp.gnu.org/gnu/gcc/

也不晓得何时是个头,到这里我就放弃了,没有继续下去了,如果有根据官方文档成功编译kudu的朋友,烦请不吝赐教!

猜你喜欢

转载自blog.csdn.net/x950913/article/details/107394704