源码v3.1.1_CE_BP1,2021-12-17,github仓库master

一、下载源码

git clone <https://github.com/oceanbase/oceanbase.git>

二、检查环境

yum install cmake* make* gcc* clang* binutils* flex* python2* bison* ccache* isa-l* libaio* \\
libunwind* libcurl* openssl-static* glibc* rpm* -y
[root@ecs-e8c4-0001 oceanbase]# yum install cmake* make* gcc* clang* binutils* flex* python2* bison* ccache* isa-l* libaio* \\
> libunwind* libcurl* openssl-static* glibc* rpm* -y
Last metadata expiration check: 2:19:07 ago on Wed 15 Dec 2021 11:07:36 AM CST.
Package cmake-3.12.1-5.ky10.aarch64 is already installed.
Package make-1:4.2.1-15.ky10.aarch64 is already installed.
Package gcc-7.3.0-20190804.h30.ky10.aarch64 is already installed.
Package gcc-c++-7.3.0-20190804.h30.ky10.aarch64 is already installed.
Package binutils-2.33.1-5.ky10.aarch64 is already installed.
Package python2-2.7.16-14.se.01.p01.ky10.aarch64 is already installed.
Package python2-debug-2.7.16-14.se.01.p01.ky10.aarch64 is already installed.
Package python2-devel-2.7.16-14.se.01.p01.ky10.aarch64 is already installed.
Package python2-help-2.7.16-14.se.01.p01.ky10.noarch is already installed.
Package python2-setuptools-40.4.3-4.ky10.noarch is already installed.
Package python2-tkinter-2.7.16-14.se.01.p01.ky10.aarch64 is already installed.
Package python2-tools-2.7.16-14.se.01.p01.ky10.aarch64 is already installed.
Package bison-3.5-2.ky10.aarch64 is already installed.
No match for argument: ccache*
No match for argument: isa-l*
Package libaio-0.3.111-5.ky10.aarch64 is already installed.
Package libunwind-1.3.1-3.ky10.aarch64 is already installed.
Package curl-7.66.0-2.ky10.aarch64 is already installed.
Package glibc-2.28-36.1.ky10.aarch64 is already installed.
Package glibc-common-2.28-36.1.ky10.aarch64 is already installed.
Package glibc-devel-2.28-36.1.ky10.aarch64 is already installed.
Package rpm-4.15.1-12.ky10.aarch64 is already installed.
Package rpm-libs-4.15.1-12.ky10.aarch64 is already installed.
Error: Unable to find a match: ccache* isa-l*

注:

1、cmake是3.22,gcc是11.2,其他版本请自行尝试

2、kylin v10的官方源里rpm版本足够

三、编译源码

先修改依赖包的支持

cd oceanbase/deps/3rd
vi dep_create.sh

//76行
76   elif [[ "${OS_ARCH}x" == "aarch64x" ]]; then
77     ID=centos           //加入这行
78     case "$ID" in
79       alios)
80         version_ge "7.0" && compat_centos7 && return
81         ;;
82       centos)
83         version_ge "8.0" && compat_centos7 && return
84         version_ge "7.0" && OS_RELEASE=7 && return
85         ;;
86     esac
87   fi
//改完保存

注:离线环境自行下载依赖包后放在目录pkg下

 开始编译

sh build.sh release --init --make OB_USE_CLANG=OFF

编译报错

[ 91%] Built target ob_storage
[ 91%] Building CXX object src/sql/CMakeFiles/ob_sql.dir/Unity/unity_ob_sql_session/0_cxx.cxx.o
[ 91%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_table/0_cxx.cxx.o
[ 91%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_inner_table/1_cxx.cxx.o
[ 91%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_datum/0_cxx.cxx.o
[ 91%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_object/0_cxx.cxx.o
In file included from /data/ob/oceanbase/build_release/src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_object/0_cxx.cxx:3:
/data/ob/oceanbase/src/share/object/ob_obj_cast.cpp:1606:14: error: use of undeclared identifier 'isnan'
  } else if (isnan(value)) {
             ^
/data/ob/oceanbase/src/share/object/ob_obj_cast.cpp:1609:14: error: use of undeclared identifier 'isinf'
  } else if (isinf(value)) {
             ^
/data/ob/oceanbase/src/share/object/ob_obj_cast.cpp:1911:14: error: use of undeclared identifier 'isnan'
  } else if (isnan(value) && lib::is_oracle_mode()) {
             ^
/data/ob/oceanbase/src/share/object/ob_obj_cast.cpp:1914:14: error: use of undeclared identifier 'isinf'
  } else if (isinf(value) && lib::is_oracle_mode()) {
             ^
[ 91%] Building CXX object src/rootserver/CMakeFiles/ob_rootserver.dir/Unity/unity_ob_rootserver_task/0_cxx.cxx.o
4 errors generated.
make[2]: *** [src/share/CMakeFiles/ob_share.dir/build.make:446: src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_object/0_cxx.cxx.o] Error 1
make[2]: *** Waiting for unfinished jobs....

修改源码:

[root@ecs-e8c4-0001 oceanbase]# vi /data/ob/oceanbase/src/share/object/ob_obj_cast.cpp

1605     LOG_ERROR("invalid input type", K(ret), K(in), K(expect_type));
1606   } else if (std::isnan(value)) {
1607     ret = OB_INVALID_NUMERIC;
1608     LOG_WARN("float_number failed ", K(ret), K(value));
1609   } else if (std::isinf(value)) {
1610     ret = OB_NUMERIC_OVERFLOW;

1910     LOG_ERROR("invalid input type", K(ret), K(in), K(expect_type));
1911   } else if (std::isnan(value) && lib::is_oracle_mode()) {
1912     ret = OB_INVALID_NUMERIC;
1913     LOG_WARN("float_number failed ", K(ret), K(value));
1914   } else if (std::isinf(value) && lib::is_oracle_mode()) {
1915     ret = OB_NUMERIC_OVERFLOW;

再次编译:

......

[ 91%] Building CXX object src/rootserver/CMakeFiles/ob_rootserver.dir/Unity/unity_ob_rootserver_vt/0_cxx.cxx.o
[ 91%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_object/0_cxx.cxx.o
[ 95%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_common/2_cxx.cxx.o
[ 95%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_schema/1_cxx.cxx.o
[ 95%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_resource_manager/0_cxx.cxx.o
[ 95%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_variable/0_cxx.cxx.o
[ 95%] Building CXX object src/share/CMakeFiles/ob_share.dir/Unity/unity_ob_share_backup/0_cxx.cxx.o
[100%] Building CXX object src/rootserver/CMakeFiles/ob_rootserver.dir/Unity/unity_ob_rootserver_restore/0_cxx.cxx.o
[100%] Building CXX object src/rootserver/CMakeFiles/ob_rootserver.dir/Unity/unity_ob_rootserver_task/1_cxx.cxx.o
[100%] Built target ob_storage
[100%] Built target ob_sql
[100%] Built target ob_rootserver
[100%] Built target ob_share
[100%] Linking CXX static library liboceanbase_static.a
[100%] Built target oceanbase_static
[100%] Linking CXX executable observer
[100%] Built target observer
[root@ecs-e8c4-0001 oceanbase]#
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐