UE5 engine build on Manjaro Linux 21.2.6 fails linking with missing symbols from TBB and OpenColorIO. My first suspicion is that it might be pulling in system level libs at the wrong version level, but I’m still digging into the logs.
This is the build failure I am seeing, any help would be appreciated.
UE5
bash "/run/media/builds/UnrealEngine/Engine/Build/BatchFiles/Linux/Build.sh" UnrealEditor Linux Development
Setting up bundled DotNet SDK
Microsoft (R) Build Engine version 16.7.0-preview-20360-03+188921e2f for .NET
Copyright (C) Microsoft Corporation. All rights reserved.
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:03.85
Running command : dotnet Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.dll UnrealEditor Linux Development
Log file: /run/media/builds/UnrealEngine/Engine/Programs/UnrealBuildTool/Log.txt
Using 'git status' to determine working set for adaptive non-unity build (/run/media/builds/UnrealEngine).
Waiting for 'git status' command to complete
Parsing headers for UnrealEditor
Running UnrealHeaderTool UnrealEditor "/run/media/builds/UnrealEngine/Engine/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealEditor.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -abslog="/run/media/builds/UnrealEngine/Engine/Programs/UnrealBuildTool/Log_UHT.txt"
Reflection code generated for UnrealEditor in 67.638364 seconds
Building UnrealEditor...
Determining max actions to execute in parallel (8 physical cores, 8 logical cores)
Executing up to 8 processes, one per physical core
Building 41 actions with 8 processes...
[1/41] Link (lld) libUnrealEditor-OpenColorIO.so
ld.lld: error: undefined symbol: OpenColorIO_v2_1::GPUProcessor::extractGpuShaderInfo(std::__1::shared_ptr<OpenColorIO_v2_1::GpuShaderDesc>&) const
>>> referenced by OpenColorIOColorTransform.cpp:216 (./../Plugins/Compositing/OpenColorIO/Source/OpenColorIO/Private/OpenColorIOColorTransform.cpp:216)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Compositing/OpenColorIO/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/OpenColorIO/Module.OpenColorIO.cpp.o:(UOpenColorIOColorTransform::CacheResourceTextures())
>>> referenced by OpenColorIOColorTransform.cpp:405 (./../Plugins/Compositing/OpenColorIO/Source/OpenColorIO/Private/OpenColorIOColorTransform.cpp:405)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Compositing/OpenColorIO/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/OpenColorIO/Module.OpenColorIO.cpp.o:(UOpenColorIOColorTransform::UpdateShaderInfo(FString&, FString&, FString&))
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
[2/41] Link (lld) libUnrealEditor-UnrealUSDWrapper.so
ld.lld: error: undefined symbol: tbb::internal::allocate_via_handler_v3(unsigned long)
>>> referenced by tbb_allocator.h:86 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/internal/../tbb_allocator.h:86)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(pxrInternal_v0_21__pxrReserved__::TfStacked<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true, pxrInternal_v0_21__pxrReserved__::Tf_ExportedStackedStorage<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true> >::_GetStack())
>>> referenced by tbb_allocator.h:86 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/internal/../tbb_allocator.h:86)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::interface6::internal::callback_leaf<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder, tbb::interface6::internal::construct_by_default<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder> >::clone() const)
ld.lld: error: undefined symbol: tbb::internal::concurrent_vector_base_v3::internal_grow_by(unsigned long, unsigned long, void (*)(void*, void const*, unsigned long), void const*)
>>> referenced by concurrent_vector.h:773 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/concurrent_vector.h:773)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::interface6::enumerable_thread_specific<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder, tbb::cache_aligned_allocator<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, (tbb::ets_key_usage_type)1>::create_local())
ld.lld: error: undefined symbol: tbb::internal::NFS_Allocate(unsigned long, unsigned long, void*)
>>> referenced by cache_aligned_allocator.h:82 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/internal/../cache_aligned_allocator.h:82)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::interface6::enumerable_thread_specific<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder, tbb::cache_aligned_allocator<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, (tbb::ets_key_usage_type)1>::create_array(unsigned long))
>>> referenced by cache_aligned_allocator.h:82 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/internal/../cache_aligned_allocator.h:82)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::concurrent_vector<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul>, tbb::cache_aligned_allocator<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul> > >::internal_allocator(tbb::internal::concurrent_vector_base_v3&, unsigned long))
ld.lld: error: undefined symbol: tbb::internal::NFS_Free(void*)
>>> referenced by cache_aligned_allocator.h:87 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/internal/../cache_aligned_allocator.h:87)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::interface6::enumerable_thread_specific<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder, tbb::cache_aligned_allocator<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, (tbb::ets_key_usage_type)1>::free_array(void*, unsigned long))
>>> referenced by cache_aligned_allocator.h:87 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/internal/../cache_aligned_allocator.h:87)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::concurrent_vector<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul>, tbb::cache_aligned_allocator<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul> > >::~concurrent_vector())
>>> referenced by cache_aligned_allocator.h:87 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/internal/../cache_aligned_allocator.h:87)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::concurrent_vector<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul>, tbb::cache_aligned_allocator<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul> > >::~concurrent_vector())
ld.lld: error: undefined symbol: tbb::internal::deallocate_via_handler_v3(void*)
>>> referenced by tbb_allocator.h:91 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/internal/../tbb_allocator.h:91)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::interface6::internal::callback_leaf<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder, tbb::interface6::internal::construct_by_default<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder> >::destroy())
ld.lld: error: undefined symbol: tbb::internal::concurrent_vector_base_v3::internal_clear(void (*)(void*, unsigned long))
>>> referenced by concurrent_vector.h:1014 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/concurrent_vector.h:1014)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::concurrent_vector<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul>, tbb::cache_aligned_allocator<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul> > >::~concurrent_vector())
ld.lld: error: undefined symbol: tbb::internal::concurrent_vector_base_v3::~concurrent_vector_base_v3()
>>> referenced by concurrent_vector.h:1016 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/concurrent_vector.h:1016)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::concurrent_vector<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul>, tbb::cache_aligned_allocator<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul> > >::~concurrent_vector())
>>> referenced by concurrent_vector.h:1016 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/concurrent_vector.h:1016)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::concurrent_vector<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul>, tbb::cache_aligned_allocator<tbb::internal::padded<tbb::interface6::internal::ets_element<pxrInternal_v0_21__pxrReserved__::Tf_StackedStorageType<pxrInternal_v0_21__pxrReserved__::UsdStageCacheContext, true>::_StackHolder>, 128ul> > >::~concurrent_vector())
ld.lld: error: undefined symbol: tbb::internal::thread_get_id_v3()
>>> referenced by tbb_thread.h:317 (ThirdParty/Intel/TBB/IntelTBB-2019u8/include/tbb/tbb_thread.h:317)
>>> /run/media/builds/UnrealEngine/Engine/Plugins/Importers/USDImporter/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Development/UnrealUSDWrapper/Module.UnrealUSDWrapper.cpp.o:(tbb::interface6::internal::ets_base<(tbb::ets_key_usage_type)1>::table_lookup(bool&))
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:1228: UnrealEditor] Error 6