luau
luau copied to clipboard
Failed to link Luau after Clang build in Linux
Trying to build Unigine game project with Luau.
-
On Windows it just build as intended.
-
On Linux it fails on final link with shared lib relocation problem:
[275/277] Linking CXX shared library scpdc/lua_system/libLuaSystem_plugin_x64.so
FAILED: scpdc/lua_system/libLuaSystem_plugin_x64.so
: && /usr/bin/clang++ -fPIC -msse4.2 -fno-pic -O3 -DNDEBUG -shared -Wl,-soname,libLuaSystem_plugin_x64.so -o scpdc/lua_system/libLuaSystem_plugin_x64.so scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaPlugin.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaState.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaWorldLogic.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaConsole.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaEngine.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaSound.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaMath.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/PropGenerator.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaXml.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaNode.cpp.o scpdc/lua_system/CMakeFiles/LuaSystem.dir/src/LuaProperty.cpp.o -Wl,-rpath,/m/git/scpdc/bin /m/git/scpdc/bin/libUnigine_x64.so scpdc/core/libscpdc_core_x64.a imgui/libImGui.a _deps/luau-build/libLuau.VM.a _deps/luau-build/libLuau.Compiler.a /m/git/scpdc/bin/libUnigine_x64.so _deps/luau-build/libLuau.Ast.a _deps/luau-build/libLuau.CLI.lib.a && :
/usr/bin/ld: _deps/luau-build/libLuau.VM.a(lapi.cpp.o): relocation R_X86_64_32 against hidden symbol `luaO_nilobject_' can not be used when making a shared object
/usr/bin/ld: failed to set dynamic section sizes: bad value
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
CMakeLists.txt for luau:
...
# Disable C++ exceptions
if(MSVC)
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHs-c-")
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
endif()
# Add luau
CPMAddPackage(
NAME Luau
GIT_TAG 0.618
GITHUB_REPOSITORY luau-lang/luau
OPTIONS
#"LUAU_BUILD_CLI OFF" # https://github.com/luau-lang/luau/issues/1208
"LUAU_BUILD_TESTS OFF"
"LUAU_BUILD_WEB OFF"
)
if(Luau_ADDED)
file(COPY ${Luau_SOURCE_DIR}/tools/natvis/VM.natvis DESTINATION ${CMAKE_SOURCE_DIR}/natvis)
target_sources(LuaSystem PRIVATE ${CMAKE_SOURCE_DIR}/natvis/VM.natvis)
endif()
# Add LuaBridge3
CPMAddPackage(
NAME LuaBridge
GITHUB_REPOSITORY kunitoki/LuaBridge3
GIT_TAG 3.0-rc4
)
if(LuaBridge_ADDED)
add_library(LuaBridge3 INTERFACE IMPORTED)
target_include_directories(LuaBridge3 INTERFACE "${LuaBridge_SOURCE_DIR}/Distribution/LuaBridge")
endif()
target_link_libraries(LuaSystem
PUBLIC Luau.VM LuaBridge3
PRIVATE Luau.Compiler)