diff --git a/.cargo/config.toml b/.cargo/config.toml
index ab8abf6..3042d94 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -1,2 +1,2 @@
 [build]
-rustflags = ["-Clinker=clang++-14", "-Clink-arg=-fuse-ld=lld"]
+rustflags = ["-Clinker=clang++", "-Clink-arg=-fuse-ld=lld"]
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b997361..4a1372d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,11 +55,13 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
 if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines-ts")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines")
     set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")
     add_link_options(-fuse-ld=lld)
     # Do not build with libc++ (LLVM's implementation of the C++ standard library) in fdb
     set(USE_LIBCXX OFF)
+    add_compile_options(-Wno-unused-but-set-variable)
+    add_compile_options(-Wno-unused-command-line-argument)
 elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
     set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines")
 endif()
diff --git a/cmake/CLangFormat.cmake b/cmake/CLangFormat.cmake
index c74b3dd..e56de49 100644
--- a/cmake/CLangFormat.cmake
+++ b/cmake/CLangFormat.cmake
@@ -1,4 +1,12 @@
-set(CLANG_FORMAT "/usr/bin/clang-format-14")
+if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+    set(CLANG_FORMAT "/usr/bin/clang-format-14")
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
+    find_program(CLANG_FORMAT
+                NAMES clang-format
+                PATHS /usr/bin /usr/local/bin
+                DOC "PATH to clang-format executable"
+                NO_ERROR)
+endif()
 if(EXISTS ${CLANG_FORMAT})
     message(STATUS "Found clang-format at ${CLANG_FORMAT}")
 
diff --git a/cmake/CLangTidy.cmake b/cmake/CLangTidy.cmake
index 6f387b0..eee0111 100644
--- a/cmake/CLangTidy.cmake
+++ b/cmake/CLangTidy.cmake
@@ -1,7 +1,15 @@
 # clang-tidy generates too many warnings, so just disable it by default.
 option(ENABLE_CLANG_TIDY "Run clang-tidy during build" OFF)
 
-find_program(CLANG_TIDY NAMES clang-tidy-14)
+if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+    find_program(CLANG_TIDY NAMES clang-tidy-14)
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
+    find_program(CLANG_TIDY
+                NAMES clang-tidy
+                PATHS /usr/bin /usr/local/bin
+                DOC "PATH to clang-tidy executable"
+                NO_ERROR)
+endif()
 if(CLANG_TIDY)
     if(CMake_SOURCE_DIR STREQUAL CMake_BINARY_DIR)
         message(FATAL_ERROR "CMake_RUN_CLANG_TIDY requires an out-of-source build!")
diff --git a/setup.py b/setup.py
index ef264d1..6fc49d0 100644
--- a/setup.py
+++ b/setup.py
@@ -45,8 +45,8 @@ class CMakeBuild(build_ext):
             f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={extdir}",
             f"-DPYTHON_EXECUTABLE={sys.executable}",
             f"-DCMAKE_BUILD_TYPE={cfg}",  # not used on MSVC, but no harm
-            "-DCMAKE_CXX_COMPILER=clang++-14",
-            "-DCMAKE_C_COMPILER=clang-14",
+            "-DCMAKE_CXX_COMPILER=clang++",
+            "-DCMAKE_C_COMPILER=clang",
             "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON",
             "-DUSE_RTTI=ON",
             "-DOVERRIDE_CXX_NEW_DELETE=OFF",
diff --git a/src/fuse/CMakeLists.txt b/src/fuse/CMakeLists.txt
index eaaeb9c..7189434 100644
--- a/src/fuse/CMakeLists.txt
+++ b/src/fuse/CMakeLists.txt
@@ -1,7 +1,7 @@
 if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
-    link_directories(/usr/local/lib/x86_64-linux-gnu/ /usr/lib64 /usr/local/lib64)
+    link_directories(/usr/local/lib/x86_64-linux-gnu/)
 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
-    link_directories(/usr/local/lib/aarch64-linux-gnu/ /usr/lib64 /usr/local/lib64)
+    link_directories(/usr/local/lib64 usr/local/lib/aarch64-linux-gnu/)
 endif()
 
 target_add_lib(hf3fs_fuse common core-app meta-client storage-client fuse3 client-lib-common)