La utilización de versiones antiguas de JDK sobre Fedora, suele presentar el siguiente error al lanzar cualquier aplicación que use de la máquina virtual de Java.
Error occurred during initialization of VM Unable to load native library: .../libjava.so: symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
Gracias a tux.cl (realmente Jakub Jelinek de RedHat) hemos dado con la solución para resolver de forma rápida y efectiva el mencionado error, sin necesidad de hacer grandes cambios.
Según nos indican, Jakub Jelinek de RedHat propone lo siguiente para solucionar el problema:
gcc -O2 -shared -o ~/libcwait.so -fpic -xc - <<EOF #include <errno.h> #include <sys/syscall.h> #include <sys/types.h> #include <sys/wait.h> pid_t __libc_wait (int *status) { int res; asm volatile ("pushl %%ebx\n\t" "movl %2, %%ebx\n\t" "movl %1, %%eax\n\t" "int \$0x80\n\t" "popl %%ebx" : "=a" (res) : "i" (__NR_wait4), "0" (WAIT_ANY), "c" (status), "d" (0), "S" (0)); return res; } EOF
Tras ejecutar esto, hay que fijar un par de variables de entorno:
export LD_ASSUME_KERNEL=2.4.19 export LD_PRELOAD=~/libcwait.so