Domanda

La mia distribuzione (Arch Linux) ha recentemente aumentato il minimo supportato versione del kernel Linux per la sua toolchain. Sto compilando un'applicazione web che collego staticamente e poi caricati su un server web, e la versione del kernel sul server web è troppo vecchio per le librerie statiche compilati con la nuova toolchain. (Ho un errore di segmentazione quando si tenta di eseguire binari statici sul server.) C'è un modo per compilare applicazioni utilizzando la toolchain GNU (GCC, binutils, glibc) tale che funzioni che richiedono le versioni del kernel più recenti sono lasciati fuori?

È stato utile?

Soluzione

compatibilità

Glibc è davvero garantita solo in una direzione. (Binari più vecchi funzionano su sistemi più recenti, viceversa, non necessariamente.)

Per garantire che i binari lavorano su sistemi più vecchi, compilare il collegamento con una glibc più vecchio. Il modo più semplice per farlo è quello di trovare una distribuzione più vecchio, ma mi sento di raccomandare la creazione di un " CrossTool "o simili cross-compilazione toolchain mira un libc diverso da quello che utilizza il vostro sistema di compilazione (e questo permette ripetibile costruisce tra gli host indipendentemente da ciò che il sistema sia).

Altri suggerimenti

Grazie. Ho anche trovato l'opzione --enable-kernel per glibc, che permette di lavorare con i kernel precedenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top