GNU/Linux >> Linux Esercitazione >  >> Linux

Come evitare i simboli STT_GNU_IFUNC nel tuo binario?

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.


Linux
  1. Come modificare il nome host della tua macchina Linux senza dover riavviare

  2. Come scoprire quale server DNS è configurato sulla tua macchina? Linux/Finestre/OSX

  3. Come spegnere o riavviare Linux

  4. Come compilare un binario a 32 bit su una macchina Linux a 64 bit con gcc/cmake

  5. Come ottenere l'indirizzo MAC della tua macchina usando un programma C?

Come registrare la sessione del terminale su Linux

Come installare Windows 10 in Virtualbox su Linux

Come testare il sistema operativo Plasma Mobile sul tuo computer

Come cambiare il tuo nome host in Linux

Come ottenere il tuo indirizzo IP su Linux

Come si cancella la cache del codice di Visual Studio su un computer Mac/Linux?