【数据库】在Kylin V10/ARM平台上源码编译oceanbase开源版
源码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* lib
·
源码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]#
更多推荐
已为社区贡献1条内容
所有评论(0)