tgfrerer / island

πŸŒ‹πŸŽ Project Island is an experimental, hot-reloading Vulkan Renderer for Linux and Windows, written in C/C++.
MIT License
992 stars 39 forks source link

SPIRV and GLSLANG linker errors for examples #59

Open jopadan opened 7 months ago

jopadan commented 7 months ago
[ 98%] Linking CXX executable Island-Asterisks
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(shaderc.cc.o): in function `shaderc_compilation_result_spv_binary::~shaderc_compilation_result_spv_binary()':
(.text._ZN37shaderc_compilation_result_spv_binaryD2Ev[_ZN37shaderc_compilation_result_spv_binaryD5Ev]+0x13): undefined reference to `spvBinaryDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(shaderc.cc.o): in function `shaderc_compilation_result_spv_binary::~shaderc_compilation_result_spv_binary()':
(.text._ZN37shaderc_compilation_result_spv_binaryD0Ev[_ZN37shaderc_compilation_result_spv_binaryD5Ev]+0x13): undefined reference to `spvBinaryDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsDisassemble(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<unsigned int, std::allocator<unsigned int> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
(.text+0x1e8): undefined reference to `spvtools::SpirvTools::SpirvTools(spv_target_env)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x35a): undefined reference to `spvtools::SpirvTools::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, char const*)>)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x388): undefined reference to `spvtools::SpirvTools::Disassemble(std::vector<unsigned int, std::allocator<unsigned int> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, unsigned int) const'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x51c): undefined reference to `spvtools::SpirvTools::~SpirvTools()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsAssemble(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, shaderc_util::string_piece, spv_binary_t**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
(.text+0x6cd): undefined reference to `spvContextCreate'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x70c): undefined reference to `spvTextToBinary'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xa75): undefined reference to `spvDiagnosticDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xa7f): undefined reference to `spvContextDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsOptimize(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<shaderc_util::PassId, std::allocator<shaderc_util::PassId> > const&, spvtools::OptimizerOptions&, std::vector<unsigned int, std::allocator<unsigned int> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
(.text+0xcd2): undefined reference to `spvValidatorOptionsCreate'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xce7): undefined reference to `spvValidatorOptionsSetSkipBlockLayout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xcf4): undefined reference to `spvValidatorOptionsSetRelaxLogicalPointer'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xd01): undefined reference to `spvValidatorOptionsSetBeforeHlslLegalization'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xd11): undefined reference to `spvOptimizerOptionsSetValidatorOptions'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xd23): undefined reference to `spvOptimizerOptionsSetRunValidator'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xd50): undefined reference to `spvtools::Optimizer::Optimizer(spv_target_env)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xef9): undefined reference to `spvtools::Optimizer::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, char const*)>)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xf49): undefined reference to `spvtools::CreateCompactIdsPass()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xf56): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xf5e): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0xf94): undefined reference to `spvtools::Optimizer::Run(unsigned int const*, unsigned long, std::vector<unsigned int, std::allocator<unsigned int> >*, spv_optimizer_options_t*) const'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x1062): undefined reference to `spvtools::Optimizer::~Optimizer()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x106c): undefined reference to `spvValidatorOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10a6): undefined reference to `spvtools::Optimizer::RegisterPerformancePasses()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10b6): undefined reference to `spvtools::Optimizer::RegisterLegalizationPasses()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10c9): undefined reference to `spvtools::CreateStripDebugInfoPass()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10d6): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x10e6): undefined reference to `spvtools::Optimizer::RegisterSizePasses()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsDisassemble(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<unsigned int, std::allocator<unsigned int> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) [clone .cold]':
(.text.unlikely+0x78): undefined reference to `spvtools::SpirvTools::~SpirvTools()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsOptimize(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<shaderc_util::PassId, std::allocator<shaderc_util::PassId> > const&, spvtools::OptimizerOptions&, std::vector<unsigned int, std::allocator<unsigned int> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) [clone .cold]':
(.text.unlikely+0x1c6): undefined reference to `spvtools::Optimizer::~Optimizer()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text.unlikely+0x1d0): undefined reference to `spvValidatorOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text.unlikely+0x1fb): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::GlslangInitializer::GlslangInitializer()':
(.text+0x4a): undefined reference to `glslang::InitializeProcess()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::GlslangInitializer::~GlslangInitializer()':
(.text+0xd9): undefined reference to `glslang::FinalizeProcess()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::PreprocessShader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, shaderc_util::string_piece const&, shaderc_util::string_piece const&, shaderc_util::CountingIncluder&) const':
(.text+0x66ca): undefined reference to `glslang::TShader::TShader(EShLanguage)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x670f): undefined reference to `glslang::TShader::setStringsWithLengthsAndNames(char const* const*, int const*, char const* const*, int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6771): undefined reference to `glslang::TShader::setInvertY(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6780): undefined reference to `glslang::TShader::setNanMinMaxClamp(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x683d): undefined reference to `glslang::TShader::preprocess(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, glslang::TShader::Includer&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6851): undefined reference to `glslang::TShader::getInfoLog()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6991): undefined reference to `glslang::TShader::getInfoLog()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x6a56): undefined reference to `glslang::TShader::~TShader()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::Compile(shaderc_util::string_piece const&, EShLanguage, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, std::function<EShLanguage (std::ostream*, shaderc_util::string_piece const&)> const&, shaderc_util::CountingIncluder&, shaderc_util::Compiler::OutputType, std::ostream*, unsigned long*, unsigned long*) const':
(.text+0x768a): undefined reference to `glslang::TShader::TShader(EShLanguage)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x76dc): undefined reference to `glslang::TShader::setStringsWithLengthsAndNames(char const* const*, int const*, char const* const*, int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x76f9): undefined reference to `glslang::TShader::setEntryPoint(char const*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7709): undefined reference to `glslang::TShader::setAutoMapBindings(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7727): undefined reference to `glslang::TShader::setAutoMapLocations(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7742): undefined reference to `glslang::TShader::setShiftImageBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7756): undefined reference to `glslang::TShader::setShiftSamplerBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x776a): undefined reference to `glslang::TShader::setShiftTextureBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x777e): undefined reference to `glslang::TShader::setShiftUboBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7792): undefined reference to `glslang::TShader::setShiftSsboBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x77a6): undefined reference to `glslang::TShader::setShiftUavBinding(unsigned int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x77b6): undefined reference to `glslang::TShader::setHlslIoMapping(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x77ca): undefined reference to `glslang::TShader::setResourceSetBinding(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_s
, std::allocator<char> > > > const&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x77f8): undefined reference to `glslang::TShader::setInvertY(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7808): undefined reference to `glslang::TShader::setNanMinMaxClamp(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x78a3): undefined reference to `glslang::TShader::parse(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, glslang::TShader::Includer&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x78b2): undefined reference to `glslang::TShader::getInfoLog()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7925): undefined reference to `glslang::TProgram::TProgram()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7967): undefined reference to `glslang::TProgram::link(EShMessages)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x797e): undefined reference to `glslang::TProgram::getInfoLog()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7a2e): undefined reference to `glslang::GlslangToSpv(glslang::TIntermediate const&, std::vector<unsigned int, std::allocator<unsigned int> >&, glslang::SpvOptions*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7ad1): undefined reference to `glslang::TProgram::~TProgram()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x7ad9): undefined reference to `glslang::TShader::~TShader()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x8159): undefined reference to `glslang::TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x84b0): undefined reference to `spvOptimizerOptionsCreate'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x84c7): undefined reference to `spvOptimizerOptionsSetPreserveBindings'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x858f): undefined reference to `spvOptimizerOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x8623): undefined reference to `glslang::TProgram::mapIO(glslang::TIoMapResolver*, glslang::TIoMapper*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text+0x870b): undefined reference to `spvOptimizerOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::PreprocessShader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, shaderc_util::string_piece const&, shaderc_util::string_piece const&, shaderc_util::CountingIncluder&) const [clone .cold]':
(.text.unlikely+0x47b): undefined reference to `glslang::TShader::~TShader()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::Compile(shaderc_util::string_piece const&, EShLanguage, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, std::function<EShLanguage (std::ostream*, shaderc_util::string_piece const&)> const&, shaderc_util::CountingIncluder&, shaderc_util::Compiler::OutputType, std::ostream*, unsigned long*, unsigned long*) const [clone .cold]':
(.text.unlikely+0x52e): undefined reference to `spvOptimizerOptionsDestroy'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text.unlikely+0x555): undefined reference to `glslang::TProgram::~TProgram()'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: (.text.unlikely+0x567): undefined reference to `glslang::TShader::~TShader()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/Island-Asterisks.dir/build.make:115: Island-Asterisks] Error 1
make[1]: *** [CMakeFiles/Makefile2:399: CMakeFiles/Island-Asterisks.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
tgfrerer commented 7 months ago

Hmm, it looks like an issue with shaderc - could it be that the locally available version of shaderc might be out-of-date?

Which flavour of Linux (and version) are you working with? In case it's Arch Linux, it might be that the shaderc package is installed separately, and needs updating.

jopadan commented 7 months ago
uname -a
6.6.1-gentoo #1 SMP PREEMPT_DYNAMIC Thu Nov  9 05:40:10 CET 2023 x86_64 Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz GenuineIntel GNU/Linux
shaderc -v
shaderc, bgfx shader compiler tool, version 1.18.118.
shaderc-2023.7

glslc --version
dev-util/spirv-tools-1.3.268
dev-util/glslang-1.3.268-r2
Target: SPIR-V 1.0

libtool --version
libtool (GNU libtool) 2.4.7
ld --version
GNU ld (Gentoo 2.41 p2) 2.41.0
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/13/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-13.2.1_p20231118/work/gcc-13-20231118/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/13 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/13/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/13 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/13/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/13/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13 --disable-silent-rules --disable-dependency-tracking --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/13/python --enable-objc-gc --enable-languages=c,c++,d,go,objc,obj-c++,fortran,ada,m2 --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 13.2.1_p20231118 p10' --with-gcc-major-version-only --enable-libstdcxx-time --enable-lto --disable-libstdcxx-pch --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libssp --disable-libada --disable-cet --disable-systemtap --disable-valgrind-annotations --enable-vtable-verify --with-zstd --with-isl --disable-isl-version-check --enable-default-pie --enable-default-ssp --with-build-config='bootstrap-O3 bootstrap-lto'
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.1 20231118 (Gentoo 13.2.1_p20231118 p10) 
tgfrerer commented 7 months ago

Oh nice, Gentoo! :)

the only thing that looks a bit strange is the output of shaderc ... on my system i don't have a separate shaderc executable, and shaderc is a tool that was originally developed by google and then became part of the Vulkan SDK, while bgfx is its own engine...

I see from the bgfx docs that it provides a tool called shaderc, and that, when globally installed on your system, might perhaps be clashing with the Vulkan shaderc library of the same name...

simsilver commented 7 months ago

change shaderc_combined to shaderc_shared in modules/le_shader_compiler/CMakeLists.txt fix this on fedora

tgfrerer commented 7 months ago

@simsilver that could be a workaround if a system does not provide shaderc_combined ...

Note that an Island application that was compiled against shaderc_shared will need to be bundled with libshaderc_shared.so in case it is not provided on the target system. Ideally, static Release builds are as self-contained as possible.

simsilver commented 7 months ago

Hmm, I have installed the shaderc_combined static lib, tried that if link with shaderc_combined, I need append "SPIRV MachineIndependent GenericCodeGen OGLCompiler OSDependent SPIRV-Tools SPIRV-Tools-opt" after shaderc_combined too on fedora, and the first 5 static lib from glslang-devel, last 2 shared lib from spirv-tools-libs

tgfrerer commented 7 months ago

@simsilver huh, looks like the shaderc_combined library is somehow different to what i have on ubuntu - or windows, for that matter... ideally, it shouldn't have to be this cumbersome to set it up. Could it be that your install is using a Fedora rpm package for shaderc, and not the version of shaderc that is provided with the Vulkan SDK tarball?

It's good to find out about these subtle differences between linux flavours, and installs... I think the default option should be to somehow find the local Vulkan SDK install, and use shaderc from there. I'm all ears for ideas of how this could be achieved more reliably :)

markg85 commented 2 weeks ago

Could you re-open this one? I tried compiling the video_player_example according to your compile instruction. I'm on archlinux and seem to be having the same issues, i did install the packages you recommend in the readme.

Current git version with arch being up to date. Long log... but here's the output:

❯ cmake -G Ninja ..
-- The C compiler identification is GNU 14.1.1
-- The CXX compiler identification is GNU 14.1.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Compiler id: 'GNU'
-- Build type:
-- Created symbolic link '/home/mark/GitProjects/island/apps/examples/video_player_example/build/bin/resources' β†’ '/home/mark/GitProjects/island/apps/examples/video_player_example/../../../resources'
--    video_player_example_app ← le_window
--    video_player_example_app ← le_ui_event
--    video_player_example_app ← le_renderer
--    video_player_example_app ← le_pipeline_builder
--    video_player_example_app ← le_camera
--    video_player_example_app ← le_video_decoder
--    video_player_example_app ← le_timebase
--    video_player_example_app ← le_imgui
--    video_player_example_app ← le_log
--  le_log
--  le_imgui
--    le_imgui ← le_pipeline_builder
--    le_imgui ← le_renderer
--    le_imgui ← le_ui_event
Imgui Build: generator is set to Ninja
--  le_timebase
--  le_video_decoder
--    le_video_decoder ← le_backend_vk
--    le_video_decoder ← le_renderer
--    le_video_decoder ← le_log
--    le_video_decoder ← le_timebase
--  le_camera
--    le_camera ← le_core
--    le_camera ← le_renderer
--    le_camera ← le_ui_event
--    le_camera ← le_log
--  le_pipeline_builder
--    le_pipeline_builder ← le_backend_vk
--    le_pipeline_builder ← le_renderer
--    le_pipeline_builder ← le_log
--  le_renderer
--    le_renderer ← le_backend_vk
--    le_renderer ← le_swapchain_vk
--    le_renderer ← le_jobs
--    le_renderer ← le_log
--    le_renderer ← le_tracy
--  le_ui_event
--  le_window
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Including X11 support
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
--    le_window ← le_ui_event
--    le_window ← le_log
--    le_window ← le_backend_vk
--  le_file_watcher
--    le_file_watcher ← le_log
--  le_core
--    le_core ← le_log
--    le_core ← le_file_watcher
--  le_backend_vk
--    le_backend_vk ← le_core
--    le_backend_vk ← le_log
--    le_backend_vk ← le_shader_compiler
--    le_backend_vk ← le_file_watcher
--    le_backend_vk ← le_window
--    le_backend_vk ← le_swapchain_vk
--    le_backend_vk ← le_renderer
--    le_backend_vk ← le_tracy
--  le_swapchain_vk
--    le_swapchain_vk ← le_core
--    le_swapchain_vk ← le_window
--    le_swapchain_vk ← le_log
--    le_swapchain_vk ← le_backend_vk
--    le_swapchain_vk ← le_renderer
--    le_swapchain_vk ← le_tracy
--  le_jobs
--  le_shader_compiler
--    le_shader_compiler ← le_log
--    le_shader_compiler ← le_renderer
--  le_tracy
-- Compile defs contain: VK_ENABLE_BETA_EXTENSIONS=true
--    le_tracy ← le_log
-- Static libraries : le_tracy;le_shader_compiler;le_jobs;le_swapchain_vk;le_backend_vk;le_core;le_file_watcher;le_window;le_renderer;le_pipeline_builder;le_camera;le_video_decoder;le_timebase;le_imgui;le_log;video_player_example_app
-- Loaded modules   : le_log;le_imgui;le_timebase;le_video_decoder;le_camera;le_pipeline_builder;le_renderer;le_ui_event;le_window;le_file_watcher;le_core;le_backend_vk;le_swapchain_vk;le_jobs;le_shader_compiler;le_tracy
-- Libs dependencies: le_core
-- Created symbolic link '/home/mark/GitProjects/island/apps/examples/video_player_example/build/bin/local_resources' β†’ '/home/mark/GitProjects/island/apps/examples/video_player_example/resources'
-- Configuring done (1.1s)
-- Generating done (0.0s)
-- Build files have been written to: /home/mark/GitProjects/island/apps/examples/video_player_example/build
❯ ninja
[84/84] Linking CXX executable bin/Island-VideoPlayerExample
FAILED: bin/Island-VideoPlayerExample
: && /usr/bin/c++   CMakeFiles/Island-VideoPlayerExample.dir/main.cpp.o -o bin/Island-VideoPlayerExample  -ldl  bin/modules/lible_core.a  -Wl,--start-group  bin/modules/lible_tracy.a  bin/modules/lible_shader_compiler.a  bin/modules/lible_jobs.a  bin/modules/lible_swapchain_vk.a  bin/modules/lible_backend_vk.a  bin/modules/lible_core.a  bin/modules/lible_file_watcher.a  bin/modules/lible_window.a  bin/modules/lible_renderer.a  bin/modules/lible_pipeline_builder.a  bin/modules/lible_camera.a  bin/modules/lible_video_decoder.a  bin/modules/lible_timebase.a  bin/modules/lible_imgui.a  bin/modules/lible_log.a  bin/modules/libvideo_player_example_app.a  -Wl,--end-group  -lshaderc_combined  -lpthread  -lX11  -lstdc++fs  -Wl,--whole-archive  -Wl,--no-whole-archive  bin/modules/libglfw3.a  /usr/lib/librt.a  -lm  -ldl  bin/modules/libimgui.a && :
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::GlslangInitializer::GlslangInitializer()':
(.text+0xea): undefined reference to `glslang::InitializeProcess()'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::GlslangInitializer::~GlslangInitializer()':
(.text+0x192): undefined reference to `glslang::FinalizeProcess()'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::PreprocessShader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, shaderc_util::string_piece const&, shaderc_util::string_piece const&, shaderc_util::CountingIncluder&) const':
(.text+0x704d): undefined reference to `glslang::TShader::TShader(EShLanguage)'
/usr/bin/ld: (.text+0x7092): undefined reference to `glslang::TShader::setStringsWithLengthsAndNames(char const* const*, int const*, char const* const*, int)'
/usr/bin/ld: (.text+0x7100): undefined reference to `glslang::TShader::setInvertY(bool)'
/usr/bin/ld: (.text+0x7111): undefined reference to `glslang::TShader::setNanMinMaxClamp(bool)'
/usr/bin/ld: (.text+0x71b8): undefined reference to `glslang::TShader::preprocess(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, glslang::TShader::Includer&)'
/usr/bin/ld: (.text+0x71cd): undefined reference to `glslang::TShader::getInfoLog()'
/usr/bin/ld: (.text+0x72e2): undefined reference to `glslang::TShader::getInfoLog()'
/usr/bin/ld: (.text+0x7377): undefined reference to `glslang::TShader::~TShader()'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::Compile(shaderc_util::string_piece const&, EShLanguage, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, std::function<EShLanguage (std::ostream*, shaderc_util::string_piece const&)> const&, shaderc_util::CountingIncluder&, shaderc_util::Compiler::OutputType, std::ostream*, unsigned long*, unsigned long*) const':
(.text+0x7efe): undefined reference to `glslang::TShader::TShader(EShLanguage)'
/usr/bin/ld: (.text+0x7f51): undefined reference to `glslang::TShader::setStringsWithLengthsAndNames(char const* const*, int const*, char const* const*, int)'
/usr/bin/ld: (.text+0x7f6f): undefined reference to `glslang::TShader::setEntryPoint(char const*)'
/usr/bin/ld: (.text+0x7f80): undefined reference to `glslang::TShader::setAutoMapBindings(bool)'
/usr/bin/ld: (.text+0x7f9f): undefined reference to `glslang::TShader::setAutoMapLocations(bool)'
/usr/bin/ld: (.text+0x7fbb): undefined reference to `glslang::TShader::setShiftImageBinding(unsigned int)'
/usr/bin/ld: (.text+0x7fd0): undefined reference to `glslang::TShader::setShiftSamplerBinding(unsigned int)'
/usr/bin/ld: (.text+0x7fe5): undefined reference to `glslang::TShader::setShiftTextureBinding(unsigned int)'
/usr/bin/ld: (.text+0x7ffa): undefined reference to `glslang::TShader::setShiftUboBinding(unsigned int)'
/usr/bin/ld: (.text+0x800f): undefined reference to `glslang::TShader::setShiftSsboBinding(unsigned int)'
/usr/bin/ld: (.text+0x8024): undefined reference to `glslang::TShader::setShiftUavBinding(unsigned int)'
/usr/bin/ld: (.text+0x8035): undefined reference to `glslang::TShader::setHlslIoMapping(bool)'
/usr/bin/ld: (.text+0x804a): undefined reference to `glslang::TShader::setResourceSetBinding(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)'
/usr/bin/ld: (.text+0x8089): undefined reference to `glslang::TShader::setInvertY(bool)'
/usr/bin/ld: (.text+0x809a): undefined reference to `glslang::TShader::setNanMinMaxClamp(bool)'
/usr/bin/ld: (.text+0x8111): undefined reference to `glslang::TShader::parse(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, glslang::TShader::Includer&)'
/usr/bin/ld: (.text+0x8121): undefined reference to `glslang::TShader::getInfoLog()'
/usr/bin/ld: (.text+0x8198): undefined reference to `glslang::TProgram::TProgram()'
/usr/bin/ld: (.text+0x81de): undefined reference to `glslang::TProgram::link(EShMessages)'
/usr/bin/ld: (.text+0x81f6): undefined reference to `glslang::TProgram::getInfoLog()'
/usr/bin/ld: (.text+0x82a8): undefined reference to `glslang::GlslangToSpv(glslang::TIntermediate const&, std::vector<unsigned int, std::allocator<unsigned int> >&, glslang::SpvOptions*)'
/usr/bin/ld: (.text+0x8485): undefined reference to `spvOptimizerOptionsCreate'
/usr/bin/ld: (.text+0x849d): undefined reference to `spvOptimizerOptionsSetPreserveBindings'
/usr/bin/ld: (.text+0x8563): undefined reference to `spvOptimizerOptionsDestroy'
/usr/bin/ld: (.text+0x858c): undefined reference to `glslang::TProgram::~TProgram()'
/usr/bin/ld: (.text+0x8595): undefined reference to `glslang::TShader::~TShader()'
/usr/bin/ld: (.text+0x8caa): undefined reference to `glslang::TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode)'
/usr/bin/ld: (.text+0x8f75): undefined reference to `glslang::TProgram::mapIO(glslang::TIoMapResolver*, glslang::TIoMapper*)'
/usr/bin/ld: (.text+0x9054): undefined reference to `spvOptimizerOptionsDestroy'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::PreprocessShader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, shaderc_util::string_piece const&, shaderc_util::string_piece const&, shaderc_util::CountingIncluder&) const [clone .cold]':
(.text.unlikely+0xd3a): undefined reference to `glslang::TShader::~TShader()'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(compiler.cc.o): in function `shaderc_util::Compiler::Compile(shaderc_util::string_piece const&, EShLanguage, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, std::function<EShLanguage (std::ostream*, shaderc_util::string_piece const&)> const&, shaderc_util::CountingIncluder&, shaderc_util::Compiler::OutputType, std::ostream*, unsigned long*, unsigned long*) const [clone .cold]':
(.text.unlikely+0xfd9): undefined reference to `glslang::TProgram::~TProgram()'
/usr/bin/ld: (.text.unlikely+0xfe9): undefined reference to `glslang::TShader::~TShader()'
/usr/bin/ld: (.text.unlikely+0x1057): undefined reference to `spvOptimizerOptionsDestroy'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsOptimize(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<shaderc_util::PassId, std::allocator<shaderc_util::PassId> > const&, spvtools::OptimizerOptions&, std::vector<unsigned int, std::allocator<unsigned int> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
(.text+0x353): undefined reference to `spvValidatorOptionsCreate'
/usr/bin/ld: (.text+0x36b): undefined reference to `spvValidatorOptionsSetSkipBlockLayout'
/usr/bin/ld: (.text+0x379): undefined reference to `spvValidatorOptionsSetRelaxLogicalPointer'
/usr/bin/ld: (.text+0x387): undefined reference to `spvValidatorOptionsSetBeforeHlslLegalization'
/usr/bin/ld: (.text+0x39a): undefined reference to `spvOptimizerOptionsSetValidatorOptions'
/usr/bin/ld: (.text+0x3af): undefined reference to `spvOptimizerOptionsSetRunValidator'
/usr/bin/ld: (.text+0x3d8): undefined reference to `spvtools::Optimizer::Optimizer(spv_target_env)'
/usr/bin/ld: (.text+0x574): undefined reference to `spvtools::Optimizer::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, char const*)>)'
/usr/bin/ld: (.text+0x5d3): undefined reference to `spvtools::CreateCompactIdsPass()'
/usr/bin/ld: (.text+0x5e3): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: (.text+0x5f0): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: (.text+0x62b): undefined reference to `spvtools::Optimizer::Run(unsigned int const*, unsigned long, std::vector<unsigned int, std::allocator<unsigned int> >*, spv_optimizer_options_t*) const'
/usr/bin/ld: (.text+0x6f6): undefined reference to `spvtools::Optimizer::~Optimizer()'
/usr/bin/ld: (.text+0x703): undefined reference to `spvValidatorOptionsDestroy'
/usr/bin/ld: (.text+0x735): undefined reference to `spvtools::Optimizer::RegisterPerformancePasses()'
/usr/bin/ld: (.text+0x745): undefined reference to `spvtools::Optimizer::RegisterLegalizationPasses()'
/usr/bin/ld: (.text+0x763): undefined reference to `spvtools::CreateStripDebugInfoPass()'
/usr/bin/ld: (.text+0x773): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: (.text+0x785): undefined reference to `spvtools::Optimizer::RegisterSizePasses()'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsAssemble(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, shaderc_util::string_piece, spv_binary_t**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
(.text+0xad6): undefined reference to `spvContextCreate'
/usr/bin/ld: (.text+0xb17): undefined reference to `spvTextToBinary'
/usr/bin/ld: (.text+0xea8): undefined reference to `spvDiagnosticDestroy'
/usr/bin/ld: (.text+0xeb1): undefined reference to `spvContextDestroy'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsDisassemble(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<unsigned int, std::allocator<unsigned int> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
(.text+0x10b8): undefined reference to `spvtools::SpirvTools::SpirvTools(spv_target_env)'
/usr/bin/ld: (.text+0x1225): undefined reference to `spvtools::SpirvTools::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, char const*)>)'
/usr/bin/ld: (.text+0x1256): undefined reference to `spvtools::SpirvTools::Disassemble(std::vector<unsigned int, std::allocator<unsigned int> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, unsigned int) const'
/usr/bin/ld: (.text+0x1424): undefined reference to `spvtools::SpirvTools::~SpirvTools()'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsOptimize(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<shaderc_util::PassId, std::allocator<shaderc_util::PassId> > const&, spvtools::OptimizerOptions&, std::vector<unsigned int, std::allocator<unsigned int> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) [clone .cold]':
(.text.unlikely+0x40): undefined reference to `spvtools::Optimizer::~Optimizer()'
/usr/bin/ld: (.text.unlikely+0x4d): undefined reference to `spvValidatorOptionsDestroy'
/usr/bin/ld: (.text.unlikely+0x125): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(spirv_tools_wrapper.cc.o): in function `shaderc_util::SpirvToolsDisassemble(shaderc_util::Compiler::TargetEnv, shaderc_util::Compiler::TargetEnvVersion, std::vector<unsigned int, std::allocator<unsigned int> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) [clone .cold]':
(.text.unlikely+0x26a): undefined reference to `spvtools::SpirvTools::~SpirvTools()'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(shaderc.cc.o): in function `shaderc_compilation_result_spv_binary::~shaderc_compilation_result_spv_binary()':
(.text._ZN37shaderc_compilation_result_spv_binaryD2Ev[_ZN37shaderc_compilation_result_spv_binaryD5Ev]+0x20): undefined reference to `spvBinaryDestroy'
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../lib/libshaderc_combined.a(shaderc.cc.o): in function `shaderc_compilation_result_spv_binary::~shaderc_compilation_result_spv_binary()':
(.text._ZN37shaderc_compilation_result_spv_binaryD0Ev[_ZN37shaderc_compilation_result_spv_binaryD5Ev]+0x20): undefined reference to `spvBinaryDestroy'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.