diff --git a/build.sh b/build.sh
index 3c75792..aff31f2 100755
--- a/build.sh
+++ b/build.sh
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 # 默认构建命令
 build_command="cmake -Bbuild -DCMAKE_BUILD_TYPE=Release"
 build_command_release="cmake --build build --config Release"
diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt
index 85d00d2..455707f 100644
--- a/client/CMakeLists.txt
+++ b/client/CMakeLists.txt
@@ -23,4 +23,15 @@ endif()
 if(DEFINED MINGW32_XP_BOOST)
 target_link_directories(tsc PRIVATE ${MBOOST_LIB_DIR})
 target_link_libraries(tsc PRIVATE ${MBOOST_LIBS})
-endif()
\ No newline at end of file
+endif()
+if(UNIX)
+execute_process(
+    COMMAND uname -a
+    OUTPUT_VARIABLE UNAME_OUT
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+if(UNAME_OUT MATCHES "alpine" OR UNAME_OUT MATCHES "Alpine")
+message(STATUS "tsc on musl static link")
+target_link_libraries(tsc PRIVATE -static;-static-libstdc++)
+endif()
+endif()
diff --git a/config/MSystem.cmake b/config/MSystem.cmake
index 5f0233d..bc41589 100644
--- a/config/MSystem.cmake
+++ b/config/MSystem.cmake
@@ -19,7 +19,9 @@ elseif(UNAME_OUTPUT MATCHES "riscv64")
 else()
     set(SYSTEM_ARCH "unknown")
 endif()
-
+if(UNAME_OUTPUT MATCHES "alpine" OR UNAME_OUTPUT MATCHES "Alpine") 
+	set(SYSTEM_ARCH "musl_${SYSTEM_ARCH}")
+endif()
 elseif (WIN32)
     # 先调用 ver 命令
     execute_process(COMMAND cmd /c ver
@@ -41,4 +43,4 @@ elseif (WIN32)
 else()
 message(FATAL_ERROR "unknow system type.")
 endif()
-message(STATUS "SYSTEM_ARCH: ${SYSTEM_ARCH}")
\ No newline at end of file
+message(STATUS "SYSTEM_ARCH: ${SYSTEM_ARCH}")
diff --git a/filecomplete b/filecomplete
index a7c6434..86e71fb 160000
--- a/filecomplete
+++ b/filecomplete
@@ -1 +1 @@
-Subproject commit a7c6434a7c333a19727aeab8212d20604426b701
+Subproject commit 86e71fbb462efce80e601db0807bca0887829836
diff --git a/ofen b/ofen
index 36e05d2..c4572bb 160000
--- a/ofen
+++ b/ofen
@@ -1 +1 @@
-Subproject commit 36e05d261821048a4c2fec1042434dd2dfc9b6de
+Subproject commit c4572bbfef4b39d40f8f530aecdf0998d1821232
diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt
index aa3bc8e..1c54891 100644
--- a/server/CMakeLists.txt
+++ b/server/CMakeLists.txt
@@ -22,4 +22,15 @@ if (UNIX)
 endif()
 if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows")
     target_link_libraries(tss PRIVATE ws2_32 wsock32)
-endif()
\ No newline at end of file
+endif()
+if(UNIX)
+execute_process(
+    COMMAND uname -a
+    OUTPUT_VARIABLE UNAME_OUT
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+if(UNAME_OUT MATCHES "alpine" OR UNAME_OUT MATCHES "Alpine")
+message(STATUS "on musl static link")
+target_link_libraries(tss PRIVATE -static;-static-libstdc++)
+endif()
+endif()