Clickhouse ODBC github地址:
https://github.com/ClickHouse/clickhouse-odbc
由于需要在CentOS 6下使用Clickhouse ODBC,但是提供的编译版本是在CentOS 7下编译的,就需要自己编译了。
0.检查
先在CentOS 6下检查下,报缺乏依赖包
ldd libclickhouseodbc.so
./libclickhouseodbc.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libclickhouseodbc.so)
linux-vdso.so.1 => (0x00007ffff31ff000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe86034b000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fe860146000)
librt.so.1 => /lib64/librt.so.1 (0x00007fe85ff3e000)
libodbc.so.2 => not found
libodbcinst.so.2 => not found
libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007fe85fd34000)
libm.so.6 => /lib64/libm.so.6 (0x00007fe85fab0000)
libc.so.6 => /lib64/libc.so.6 (0x00007fe85f71b000)
/lib64/ld-linux-x86-64.so.2 (0x00000031bfe00000)
强制安装了glibc 2.17也没解决问题。
只能安装说明文档自己编译了,
1.安装依赖环境
sudo yum install openssl unixODBC
sudo yum install openssl libiodbc
2.准备编译环境
系统要求:
CMake 3.13.5 and later
C++17 and C11 capable compiler toolchain:
Clang 4 and later
GCC 7 and later
Xcode 10 and later
Microsoft Visual Studio 2017 and later
------------
另外实际上还需要python 2.7次下pyodbc
和glibc 2.14以上
Cmake
下载Binary distributions:(https://cmake.org/download/)
我用了这个
https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-Linux-x86_64.sh
注意运行时候设置路径
export PATH=$PATH:/yourpath/cmake-3.17.0-Linux-x86_64/bin
升级到gcc 7.3:
yum -y install centos-release-scl
yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils
注意运行时候设置
scl enable devtoolset-7 bash
python 2.7次下pyodbc
yum install unixODBC-devel
python下2.7的环境
pip install pyodbc
glibc 2.17
sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
# update glibc to 2.17 for CentOS 6
cd /yourpath/glib217
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-utils-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-static-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/nscd-2.17-55.el6.x86_64.rpm &
sudo rpm -e --nodeps --justdb glibc-2.*.i686 --allmatches
sudo rpm -Uvh *-2.17-55.el6.x86_64.rpm
3.安装
scl enable devtoolset-7 bash
export PATH=$PATH:/yourpath/cmake-3.17.0-Linux-x86_64/bin
pyenv activate env2711
cd /yourpath/clickhouse-odbc-master
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
cmake --build . --config RelWithDebInfo
cmake --build . --config RelWithDebInfo --target package
4.测试
$HOME/.odbc.ini
[ODBC]
Trace=0
UseCursorLib=0
IANAAppCodePage=4
[ODBC Data Sources]
CLICKHOUSE=libclickhouseodbc.so
[CLICKHOUSE]
Driver=/yourpath/libclickhouseodbcw.so
Host=
Port=8123
Username=
Password=
Database=
isql CLICKHOUSE测试就可以了
5.其他注意事项
注意事项1.
如果不安装glibc 2.17
../../lib/libPocoFoundation.a(Mutex.cpp.o): In function `Poco::MutexImpl::tryLockImpl(long)':
/odbctest/clickhouse-odbc-master/contrib/poco/Foundation/src/Mutex_POSIX.cpp:109: undefined reference to `clock_gettime'
collect2: error: ld returned 1 exit status
gmake[2]: *** [driver/test/clickhouse-odbc-load-ut] Error 1
gmake[1]: *** [driver/test/CMakeFiles/clickhouse-odbc-load-ut.dir/all] Error 2
gmake: *** [all] Error 2
注意事项2.
需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 7.3的话:
echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile
centos 6的odbc编译版本需要的可以联系我,这个可能太大了,传不上来。