babelfish编译(centos)

整体过程如下:

操作系统版本:centos7.7

       gcc版本:4.5.8

下载源码

git clone https://github.com/babelfish-for-postgresql/postgresql_modified_for_babelfish.git

git clone https://github.com/babelfish-for-postgresql/babelfish_extensions.git
安装依赖

yum install -y openjdk-8-jre unzip libutfcpp-dev curl

yum install -y gcc-c++

yum install -y uuid uuid-devel libuuid libuuid-devel openssl-devel icu libicu-devel texinfo

yum install -y flex libxml2-devel bison readline-devel zlib-devel cmake uuid uuid-devel uuid-c++ uuid-c+±devel kernel-devel pkgconfig automake
升级openjdk-8-jre

rpm -qa| grep jdk

yum remove copy-jdk-configs-3.3-10.el7_5.noarch

yum install java-11-openjdk.x86_64
升级cmake

mkdir /opt/cmake

cd /opt/cmake

wget https://cmake.org/files/v3.16/cmake-3.16.9.tar.gz

tar -zxvf cmake-3.16.9.tar.gz

cd cmake-3.16.9/

./configure --prefix=/usr/local/make

make && make install

ln -s /usr/local/make/bin/cmake /usr/bin/cmake
升级gcc++(4.8.5->5.3->7.3)

yum groupinstall “Development Tools”

yum install glibc-static libstdc+±static

wget https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz --no-check-certificate

tar -xvzf gcc-7.3.0.tar.gz

cd gcc-7.3.0/

./contrib/download_prerequisites

cd …

mkdir build_gcc

cd build_gcc/

…/gcc-7.3.0/configure --enable-checking=release --enable-language=c,c++ --disable-multilib

make -j23

make install

替换libstdc++.so

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

检查与当前gcc对应的版本信息,我这里是 libstdc++.so.6.0.24

rm libstdc++.so.6.0

ln -s libstdc++.so.6.0 libstdc++.so.6.0.24

删除旧版本

yum remove gcc gcc-c++

ln -s /usr/local/bin/c++ /bin/c++

ln -s /usr/local/bin/g++ /bin/g++

ln -s /usr/local/bin/gcc /bin/gcc

ln -s /usr/local/bin/cc /bin/cc
编译数据库及插件

./configure --prefix=/home/wzb/babelfish CFLAGS=“-ggdb” --enable-debug --with-libxml --with-uuid=ossp --with-icu

make

cd contrib

make

cd …

make install

cd contrib

make install
编译antlr4

以root用户执行

wget https://www.antlr.org/download/antlr4-cpp-runtime-4.9.3-source.zip --no-check-certificate

unzip antlr4-cpp-runtime-4.9.3-source.zip -d antlr4

mkdir build

cd build/

export EXTENSIONS_SOURCE_CODE_PATH=“/home/wzb/babelfish_extensions”

cmake … -DANTLR_JAR_LOCATION=“$EXTENSIONS_SOURCE_CODE_PATH/contrib/babelfishpg_tsql/antlr/thirdparty/antlr/antlr-4.9.2-complete.jar” -DCMAKE_INSTALL_PREFIX=/home/wzb/antlr_build -DWITH_DEMO=True

make && make install

cp /usr/local/lib/libantlr4-runtime.so.4.9.3 “$INSTALLATION_PATH/lib”
编译babelfish插件

export PG_CONFIG=/home/wzb/babelfish/bin/pg_config

export PG_SRC=$HOME/postgresql_modified_for_babelfish

export cmake=/bin/cmake

Install babelfishpg_money extension

cd contrib/babelfishpg_money

make

make install

Install babelfishpg_common extension

cd …/babelfishpg_common

make

make install

Install babelfishpg_tds extension

cd …/babelfishpg_tds

make

make install

Installs the babelfishpg_tsql extension

cd …/babelfishpg_tsql

make

make install
连接Babelfish操作(编译tsql)

wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.3.3.tar.gz

./configure --prefix=/usr/local

make && make install

FAQ
Q1:编译中用户的选择

尽量还是使用root用户做编译,最后再授权给一个普通用户,否则有些需要向系统路径下写的操作会不执行,但是也不报错。
Q2:提示版本需要大于5.0

在运行antlr编译的时候会提示当前版本小于5.0,此时需要升级gcc,同时更新libstdc++文件。
Q3:提示undefined symbol: xmlIsCombiningGroup

这个问题是由于libxml2导致的,但是我本身系统中是安装了,最后只能删除数据库,重新make和make install一遍就可以了

参考
https://www.modb.pro/db/237004

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值