Kotlin Multiplatform native executable using dlopen+dlsym

I decided to make the Kotlin/C interop interface much simpler by building a tiny shared library in C that uses dlopen/dlsym to work with libjvm, exposing only a single function launch_java(char *libjvm_path, int jvm_argc, char *jvm_argv[], char *main_class_name, int main_argc, char *main_argv[]), then wrap that C library to KMP using C interop. What I have so far can be found here. It almost works on my Linux system, but I’m seeing errors at link time:

./libjaunch.so: error: undefined reference to 'dlerror', version 'GLIBC_2.34'
./libjaunch.so: error: undefined reference to 'dlclose', version 'GLIBC_2.34'
./libjaunch.so: error: undefined reference to 'dlopen', version 'GLIBC_2.34'
./libjaunch.so: error: undefined reference to 'dlsym', version 'GLIBC_2.34'

I know that the libdl stuff (dlopen et al.) moved intoi glibc core as of 2.34, so I don’t understand why these errors are happening. But this is maybe becoming more of a C question than a Kotlin one I suppose. Still, if anyone has any insight, I would appreciate any thoughts and ideas.