En general, los sistemas UNIX admiten la compatibilidad binaria con versiones anteriores (un binario creado en una máquina antigua continúa ejecutándose en una más nueva), pero no al revés. No puede esperar que un binario creado en un nuevo sistema se ejecute en uno más antiguo. STT_GNU_IFUNC
es solo el primero de muchos problemas que encontrarás.
Si necesita crear un binario en una máquina más nueva que se ejecutará en una más antigua, consulte este documento.
Solía haber "apgcc:un envoltorio GCC para hacer binarios portátiles" que facilitaba esto (se hace referencia desde arriba), pero parece haber desaparecido;-(
La opción más fácil es compilar en una máquina antigua (solía compilar en RedHat 6.2 y el binario resultante se ejecutaba en todas partes ). No es necesario que ejecute RH-6.2 en una máquina física, solo introdúzcalo en una máquina virtual.
La otra opción relativamente fácil es construir un chroot
, nuevamente utilizando herramientas y bibliotecas de una distribución anterior (por ejemplo, RH-6.2).
Como APGCC ya no parece estar disponible (excepto quizás aquí y aquí). Estos encabezados glibc parecen ser actualmente la forma más conveniente de generar binarios portátiles de Linux a partir de un código C al incluir uno de los archivos de encabezado más antiguos.