2012-07-03 13 views
12

In questo momento compilo il mio software C++ su una certa vecchia versione di linux (SLED 10) usando il gcc fornito e può essere eseguito sulla maggior parte delle versioni più recenti in quanto hanno un glibc più recente. Il problema è che il vecchio gcc non supporta C++ 11 e mi piacerebbe davvero usare le nuove funzionalità.Posso indirizzare il linux più vecchio con gcc/clang più recente? C++

Ora ho alcune idee, ma sono sicuro che gli altri hanno lo stesso bisogno. Cosa ha funzionato per te?

Idee:

  1. costruire su un sistema più recente, collegamento statico a una nuova glibc. (Non possibile, vero?)
  2. Costruisci su un sistema più recente, compila e collega un vecchio glibc.
  3. Build su un sistema precedente che utilizza un gcc aggiornato, collegamento a glibc meno recenti.
  4. Costruisci su un sistema più recente, collegamento dinamico a glibc più recente, imposta RPath e fornisci al nostro glibc il programma di installazione.

Come bonus, il mio software supporta anche i plug-in e ha un SDK. Preferirei davvero che i miei clienti potessero compilare le mie librerie senza troppi problemi.

Grazie in anticipo. Idee benvenute, soluzioni collaudate preferite.

risposta

2

Costruire con il più recente gcc. Installa il nuovo compilatore sulla vecchia macchina o sulla nuova macchina e installa le librerie dinamiche necessarie sulla vecchia macchina.

Si noti che più versioni di libc (e libstdc anche ++) sono supportati su una singola macchina dal momento che sono in genere di versione (cioè libc.so.5, libc.so.6, ecc)

+0

È questa la mia opzione 3 ? Un nuovo link gcc contro una vecchia libc, o stai suggerendo di collegarmi a una nuova libc e di distribuirla? – David

+0

Probabilmente è più vicino alla tua opzione 4. Non distribuire libc o libstdC++, assicurati che le versioni corrette siano installate sulla macchina di destinazione. –

Problemi correlati