diff --git a/lua/CMakeLists.txt b/lua/CMakeLists.txt
index 97eb30f..6a15747 100644
--- a/lua/CMakeLists.txt
+++ b/lua/CMakeLists.txt
@@ -4,6 +4,15 @@ project(Lua VERSION 5.4.7 LANGUAGES C)
 set(CMAKE_C_STANDARD 99)
 set(CMAKE_C_STANDARD_REQUIRED ON)
 
+# 平台特定的设置
+if(WIN32)
+    set(PLATFORM_DEFINITIONS LUA_BUILD_AS_DLL)
+    set(PLATFORM_LIBS "")
+else()
+    set(PLATFORM_DEFINITIONS LUA_USE_LINUX)
+    set(PLATFORM_LIBS -lm -ldl -Wl,-E)
+endif()
+
 if (MSVC)
     add_compile_options(/wd4530)
 endif()
@@ -20,7 +29,9 @@ list(REMOVE_ITEM LUA_SOURCES
 # Build the static library
 add_library(lua STATIC ${LUA_SOURCES})
 target_include_directories(lua PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
-target_compile_definitions(lua PRIVATE LUA_COMPAT_5_3)
+target_link_libraries(lua PRIVATE ${PLATFORM_LIBS})
+target_compile_definitions(lua PRIVATE LUA_COMPAT_5_3 ${PLATFORM_DEFINITIONS})
+set_target_properties(lua PROPERTIES POSITION_INDEPENDENT_CODE ON)
 
 # 添加Lua可执行文件
 add_executable(mlua src/lua.c)