In generale, i sistemi UNIX supportano la retrocompatibilità binaria (un binario creato su una vecchia macchina continua a funzionare su una nuova), ma non il contrario. Non puoi aspettarti che un binario costruito su un nuovo sistema funzioni su uno vecchio. STT_GNU_IFUNC
è solo il primo di molti problemi che incontrerai.
Se hai bisogno di creare un binario su una macchina più recente che verrà eseguita su una più vecchia, consulta questo documento.
C'era "apgcc:un wrapper GCC per creare binari portabili" che lo rendeva facile (si fa riferimento sopra), ma sembra che non ci sia più;-(
L'opzione più semplice è compilare su una vecchia macchina (ero solito compilare su RedHat 6.2 e il binario risultante veniva eseguito ovunque ). Non è necessario eseguire effettivamente RH-6.2 su una macchina fisica, è sufficiente attivarlo in una VM.
L'altra opzione relativamente semplice è costruire un chroot
, sempre utilizzando strumenti e librerie di una vecchia distribuzione (ad es. RH-6.2).
Poiché APGCC non sembra più disponibile (tranne forse qui e qui). Queste intestazioni glibc sembrano attualmente essere il modo più conveniente per generare binari Linux portatili da un codice C includendo uno dei file di intestazione meno recenti.