From e1fce44498dff9543a538071a505de57824b23dd Mon Sep 17 00:00:00 2001 From: colin Date: Fri, 19 Dec 2025 15:37:22 +0800 Subject: [PATCH 1/2] fix compile on old gcc. --- cpp/.gitignore | 1 - cpp/README.md | 2 +- cpp/cmake/ToolChain.cmake | 36 ++++++++++++++++++++++++++++++++++++ cpp/src/common/db_common.h | 15 +++++++++++++++ 4 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 cpp/cmake/ToolChain.cmake diff --git a/cpp/.gitignore b/cpp/.gitignore index d73b742ba..3dc8c5baf 100644 --- a/cpp/.gitignore +++ b/cpp/.gitignore @@ -5,4 +5,3 @@ build/ .settings/ .vscode/ cmake-build-debug/ -cmake*/ \ No newline at end of file diff --git a/cpp/README.md b/cpp/README.md index dced6c8c1..a98792eaa 100644 --- a/cpp/README.md +++ b/cpp/README.md @@ -75,7 +75,7 @@ Modify the Toolchain File `cmake/ToolChain.cmake`, define the following variable In the `cpp/` directory, run the following commands to create the build directory and start the compilation: ``` mkdir build && cd build -cmake .. -DToolChian=ON +cmake .. -DToolChain=ON make ``` diff --git a/cpp/cmake/ToolChain.cmake b/cpp/cmake/ToolChain.cmake new file mode 100644 index 000000000..f52be2934 --- /dev/null +++ b/cpp/cmake/ToolChain.cmake @@ -0,0 +1,36 @@ +#[[ +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +]] + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) + +## Modify +set(CMAKE_C_COMPILER /home/tsfile/dev/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc CACHE STRING "Path to the C compiler" FORCE) +set(CMAKE_CXX_COMPILER /home/colin/dev/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++ CACHE STRING "Path to the C++ compiler" FORCE) +message(STATUS "using cxx compiler ${CMAKE_CXX_COMPILER}") +message(STATUS "using c compiler ${CMAKE_C_COMPILER}") +## Modify +set(CMAKE_FIND_ROOT_PATH /home/tsfile/dev/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi) + + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") \ No newline at end of file diff --git a/cpp/src/common/db_common.h b/cpp/src/common/db_common.h index 485a0c104..113267645 100644 --- a/cpp/src/common/db_common.h +++ b/cpp/src/common/db_common.h @@ -20,7 +20,9 @@ #ifndef COMMON_DB_COMMON_H #define COMMON_DB_COMMON_H +#include #include +#include #include #include "common/allocator/my_string.h" @@ -94,7 +96,20 @@ enum CompressionType : uint8_t { extern const char* s_data_type_names[8]; extern const char* s_encoding_names[12]; extern const char* s_compression_names[8]; +} +#if defined(__GLIBCXX__) && (__GNUC__ < 7) +namespace std { +template <> +struct hash { + size_t operator()(common::TSDataType v) const noexcept { + return static_cast(static_cast(v)); + } +}; +} // namespace std +#endif + +namespace common { FORCE_INLINE const char* get_data_type_name(TSDataType type) { ASSERT(type >= BOOLEAN && type <= STRING); return s_data_type_names[type]; From ecbeb4a3ad553957397ae898946f213024437acb Mon Sep 17 00:00:00 2001 From: colin Date: Sat, 20 Dec 2025 15:12:13 +0800 Subject: [PATCH 2/2] fix fmt. --- cpp/src/common/db_common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/common/db_common.h b/cpp/src/common/db_common.h index 113267645..c85e20483 100644 --- a/cpp/src/common/db_common.h +++ b/cpp/src/common/db_common.h @@ -96,7 +96,7 @@ enum CompressionType : uint8_t { extern const char* s_data_type_names[8]; extern const char* s_encoding_names[12]; extern const char* s_compression_names[8]; -} +} // namespace common #if defined(__GLIBCXX__) && (__GNUC__ < 7) namespace std {