int main() { __res_maybe_init(); // now expects GLIBC_PRIVATE version return 0; }
undefined symbol: __res_maybe_init@GLIBC_PRIVATE This is not a real-world fix — it’s a reproduction of the error. The actual fix for such an error (if encountered in real code) is to avoid relying on glibc private symbols and link against the correct public resolver API (e.g., res_ninit , __res_init with appropriate feature test macros). undefined symbol --res-maybe-init version glibc-private
gcc -Wl,-u,__res_maybe_init@GLIBC_PRIVATE -o test main.c Where main.c is any valid C file. The linker will complain: int main() { __res_maybe_init()
But for a , use a direct linker undefined reference : undefined symbol --res-maybe-init version glibc-private
Compile and link (the error appears at link time or runtime depending on -z lazy ):