一 gcc安装
clickhouse-cpp 2.0.0这个c++的SDK依赖C++17标准,所以需要先升级gcc,推荐升级gcc到gcc 7.5.0,8版本很多库不好找
1.1 系统依赖库安装
sudo yum -y update
sudo yum -y install bzip2 wget gcc gcc-c++ gmp-devel mpfr-devel libmpc-devel make
sudo yum -y install zlib
sudo yum -y install zlib-devel
1.2 gcc 安装
下载gcc,并解压:
wget https://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
tar -zxvf gcc-7.5.0.tar.gz
cd gcc-7.5.0
安装gcc的依赖包:
./contrib/download_prerequisites
mkdir gcc-build-7.5
cd gcc-build-7.5
生成makefile文件:
../configure --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --enable-gnu-indirect-function --with-tune=generic --disable-multilib
# 耗时30分钟以上
make -j8
make install
可能会遇到automake版本问题,建议升级,使用的升级命令如下:
tar xvf automake-1.15.1.tar.gz
cd automake-1.15.1
./bootstrap.sh
./configure --prefix=/usr
make && make install
替换老的库:
cp /usr/local/lib64/libstdc++.so.6.0.24 /usr/lib64/
rm -rf /usr/lib64/libstdc++.so.6
ln -s /usr /lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6
二 clickhouse-cpp编译
这个编译比较简单,通过cmake编译,编译前需要更改使用gcc的版本:
#在前面添加
vim CMakeLists.txt
SET(CMAKE_CXX_COMPILER "/usr/local/bin/g++")
SET(CMAKE_C_COMPILER "/usr/local/bin/gcc")
编译
cd clickhouse-cpp.2.0.0
mkdir build
cd build
cmake ../
编译后,还需要拷贝下:
cp -r /home/xxx/clickhouse-cpp-2.0.0/contrib/* /usr/local/include/
三 静态编译
如果处理clickhouse程序想链接静态库,还需要编译一个库:
wget https://codeload.github.com/google/cityhash/zip/refs/heads/master
unzip cityhash-master.zip
./configure --prefix=/usr
make && make install
链接的时候:
-lcityhash -static-libgcc -static-libstdc++ -lclickhouse-cpp-lib-static
网友评论