Domanda

Il prodotto del gruppo di lavoro è attualmente in uso gcc 3.4.6 (sappiamo che è antico) per un grande basso-livello c-codice di base, e si desidera aggiornare a una versione successiva.Abbiamo visto i benefici di prestazioni test di diverse versioni di gcc 4.x su tutte le piattaforme hardware che abbiamo testato.Ci sono, tuttavia, molto paura di compilatore c bug (per una buona ragione storicamente), e chiedo se qualcuno ha intuito a quale versione si dovrebbe aggiornare.

Sono persone che utilizzano 4.3.2 codice di grandi basi-e sento che funziona benissimo?

È stato utile?

Soluzione

Il controllo di qualità migliore per il gcc è il kernel di linux.GCC è il compilatore di scelta per praticamente tutte le principali open source programmi C/C++.Un rilascio di GCC, soprattutto come uno 4.3.X, che è nelle principali distribuzioni linux, dovrebbe essere abbastanza buona.

GCC 4.3 ha anche un migliore supporto per l'ottimizzazioni delle più recenti cpu.

Altri suggerimenti

Quando ho migrato un progetto da GCC 3 a GCC 4 ho eseguito numerosi test per garantire che il comportamento era lo stesso prima e dopo.Si può solo eseguire una di eseguire una serie di (si spera automatizzato) test per verificare il comportamento corretto?Dopo tutto, si desidera che il "corretto" il comportamento, non necessariamente il GCC 3 comportamento.

Non ho una versione specifica per voi, ma perché non avere un 4.X e 3.4.6 installato?Poi si potrebbe provare a tenere il codice di compilazione su entrambe le versioni, e se si esegue attraverso una show-stopping bug in 4, si dispone di una politica di uscita.

Utilizzare l'ultima, ma la caccia e capire ogni avviso -Wall dà.Per divertimento extra, non ci sono più le bandiere segnaletiche per frob.Si fare dispone di una suite completa di regressione (e altri) test, eseguire e controllare di loro.

GCC (in particolare C++, ma anche C) ha cambiato un po'.Non molto meglio il codice di analisi e di ottimizzazione, ed è in grado di gestire il codice che si rivelasse richiamare undefined bahaviiour in modo diverso.In modo che il codice che "ha lavorato bene", ma in realtà non si basano su una particolare interpretazione di valido costruzioni saranno probabilmente break.Speriamo che il compilatore emette un messaggio di avviso o di errore, ma non è garanzia di buona fortuna.

Se siete interessati a OpenMP quindi avrete bisogno di passare a gcc 4.2 o superiore.Stiamo usando 4.2.2 su un codice di base di circa 5 milioni di linee e di non avere alcun problema con esso.

Non posso dire nulla di 4.3.2, ma il mio portatile è un sistema Gentoo Linux costruito con GCC 4.3.{0,1} (a seconda di quando ogni pacchetto è stato creato), e non ho visto problemi.Questo è per lo più solo standard uso desktop, però.Se avete qualche strano codice, il vostro chilometraggio può variare.

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