2015-12-07 13 views
5

Data una versione GLIBCXX della libreria stdC++ (esempio GLIBCXX_3.4.17) data questa versione, dove si troverà una documentazione che specifica quali caratteristiche sono state implementate ?Come si trovano le funzionalità di C++ 11 implementate data una versione GLIBCXX

Inoltre c'è un modo in cui data la versione SO NAME fornirà lo stesso documento.

Sto lavorando su un sistema incorporato che ha una versione esistente di libstdC++; sfortunatamente il crosscompiler (g ++) fornito è in una versione più grande di quella supportata dalla libreria stdC++ sul target. L'aggiornamento della libreria stdC++ sulla destinazione non è un'opzione. Prima di scrivere un sacco di codice, solo per scoprire che non viene eseguito sul target; Mi piacerebbe sapere in anticipo ciò che è e non è supportato.

Ho trovato utile il GNU Documentation; tuttavia, spero che ci sia un documento in cui si possa ottenere ciò che è stato implementato data la versione del simbolo e/o il SO NAME e in qualche modo l'ho mancato.

Grazie per qualsiasi aiuto in anticipo

+0

- se si sta cercando quale versione di gcc supporta le caratteristiche di C++ 11, consultare questo link https://gcc.gnu.org/projects/cxx0x.html –

+0

@RichardGeorge, che documenta il supporto del compilatore per il core funzioni linguistiche, non copre il supporto della libreria e non aiuta a determinare da quale versione provengono la libreria e gli header libstdC++. –

risposta

2

dato questa versione, in cui si potrebbe trovare la documentazione che specifica quali sono state implementate caratteristiche?

è possibile associare una versione GLIBCXX_A.B.C simbolo per un rilascio GCC controllando
https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html

N.B. ciò non sarà preciso, perché ad es. GCC 5.1 e GCC 5.2 utilizzano entrambi GLIBCXX_3.4.21 nella libreria condivisa. Per distinguerli, controlla la macro __GLIBCXX__ definita dalle intestazioni libstdC++, documentata anche su quella pagina.

I manuali per libstdC++ stampa sono a gcc.gnu.org/onlinedocs/gcc- [X.Y.Z]/libstdC++/manuale/ esempio
https://gcc.gnu.org/onlinedocs/gcc-5.3.0/libstdc++/manual/

Da quel manuale è una tabella di stato che mostra lo stato di attuazione per ciascuno standard, la tabella per C++ 11 supporto GCC 5.3.0 è
https://gcc.gnu.org/onlinedocs/gcc-5.3.0/libstdc++/manual/manual/status.html#status.iso.2011

Prima di scrivere un sacco di codice, per trovare solo che non viene eseguito sul bersaglio; Mi piacerebbe sapere in anticipo ciò che è e non è supportato.

Non è sufficiente evitare semplicemente l'utilizzo di funzioni non supportate dalla libreria sul sistema di destinazione. Se si collega con il cross-compilatore allora dipenderà dal libstdC++. Così da quel cross-compilatore, e non riuscirà a eseguire sul sistema di destinazione se si ha solo un libstdc vecchio ++. Così

Aggiornamento del STDC++ la biblioteca sul bersaglio non è un'opzione.

Quindi è necessario collegare in modo statico (creazione di file eseguibili di grandi dimensioni) o eseguire il downgrade del cross-compiler in modo che corrisponda alla destinazione.O almeno costringerlo a usare le intestazioni e la libreria dinamica della stessa versione trovata sulla destinazione (ignorando l'intestazione e i percorsi di ricerca della libreria per puntare alle copie dei vecchi file), anche se potrebbe non funzionare, come il più recente g++ potrebbe non essere in grado di compilare le intestazioni precedenti se contengono qualche C++ non valido che il precedente g++ non ha diagnosticato.

Problemi correlati