2015-12-09 7 views
5

Ho qualche codice multipiattaforma con alcune caratteristiche di C++ 11 come #include <thread> e altre. Presto userò una scheda QNX 6.6 e mi chiedo se il mio codice può essere compilato e quali funzionalità saranno disponibili.Sono in grado di utilizzare C++ 11 in QNX?

QCC è il compilatore QNX C++ ufficiale, ma non riesco a trovare alcuna documentazione che citi quali caratteristiche di C++ 11, o anche quali funzionalità di C++ in generale, supporta. Si tratta di un involucro attorno a GCC o a una cosa sua? In ogni caso, posso ottenere o compilare altri compilatori su questa piattaforma?

+0

La tua Airforce usa QNX? ;-) Per quanto ne so qcc usa solo' gcc' e perché di ciò dipende che gcc è usato da QNX 6.6. Una rapida ricerca mostra che QNX 6.6 sta usando gcc 4.7 (http://www.qnx.com/developers/articles/rel_5849_7.html) e qui c'è un elenco di funzionalità supportate di gcc 4.7: https://gcc.gnu.org/projects/cxx0x.html – Marged

+1

@Marged Avrei risposto a questo: è buono come chiunque altro per questa domanda: – user4581301

risposta

7

Da quello che so qcc utilizza solo gcc internamente. Per questo motivo è possibile utilizzare tutte le funzionalità fornite dalla versione di gcc che QNX ha deciso di inserire nel proprio pacchetto.

A giudicare dalla release notes of QNX 6.6 gcc 4.7 è utilizzato:

  • GCC 4.7 tool chain, incluso il supporto per Intel Advanced Vector Extensions (AVX)
  • GDB 7.5
  • Nuovo: Binutils 2.24
  • Python 2.7.5, come strumento host-side

Le note di rilascio forniscono un collegamento alle informazioni su gcc 4.7 ma penso che this link mostri meglio quali caratteristiche specifiche sono supportate. Ci sono troppe informazioni sulla pagina collegata, per questo motivo non la copio. Ma in sostanza il collegamento afferma:

GCC provides experimental support for the 2011 ISO C++ standard. This support can be enabled with the -std=c++11 or -std=gnu++11 compiler option ... GCC's C++11 mode implements much of the C++11 standard produced by the ISO C++ committee

3

La versione di gcc utilizzata da qcc supporta gran parte delle specifiche C++ 11. L'ho usato Basta aggiungere -std=c++11 alla riga del compilatore.

Ho trovato un problema con il supporto C++ 11 su QNX 6.6. Questo era nel luglio 2014, quindi le cose potrebbero essere cambiate. Il supporto dell'inizializzazione del vettore (std::vector<int> {1,2, 3, 4};) nella libreria C++ 11 fornita con QNX 6.6 è stato interrotto. Il codice si compilerebbe in modo pulito, ma poi fallire in maniera piuttosto criptica durante l'esecuzione. Ancora una volta, attualmente non conosco lo stato corrente di questo problema, quindi YMMV.

6

Mentre la risposta @Marged s' sembra coprire assolutamente ogni aspetto importante della tua domanda, vorrei aggiungere che è anche possibile ottenere più versioni correnti di tutti gli strumenti GNU dev (come gcc, gdb oppure fare ..). Questo è ufficialmente fornito dallo staff di QNX per "solo uso sperimentale", immagino . Ma finora ho avuto solo buone esperienze con loro.

Partenza di QNX aggiornato Core Development Tools

(Devi registra al portale comunità di QNX primo ad aprire il link)

enter image description here

Si potrebbe quindi aggiornare il sistema dev Linux come quello :

  • Ottieni file da here
    • Binutils
    • GCC
  • file estratto in un nuova cartella (non estrarre e sovrascrivere la cartella esistente direttamente in quanto potrebbe essere che i link simbolici non si aggiorna)
    • che dovrebbe creare la host e la cartella target
  • Copia & incollare i nuovi file nella cartella attuale QNX e sovrascrivere i file esistenti
  • Facoltativamente: aggiornare il valore del file di configurazione di default per la nuova versione del compilatore
    • esempio /../qnx650/host/linux/x86/etc/qcc/gcc/default
  • assicurarsi librerie a 32bit sono installate (se non):
    • $ sudo apt-get install lib32stdc++6
    • se non installato correttamente gli errori come il seguente può verificarsi $ i486-pc-nto-qnx6.5.0-g++: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

1 Testo ufficiale: "Le versioni stabili degli strumenti di sviluppo principali sono incluse come parte di QNX Momentics. Puoi scaricare versioni aggiornate di questi strumenti attualmente in fase di sviluppo attraverso questo progetto e trarre vantaggio dai loro miglioramenti in precedenza! "

+0

Ho problemi solo con quello : 'QtCore/qglobal.h: 39: errore: cstddef: nessun file o directory # include ' qualsiasi idea? Quando si passa a 4.6.3 (predefinito precedente) tutto ok –

+0

Suoni di più l ike il tuo ambiente QT non è installato e configurato correttamente (Qt Creator). Stai forse usando MS Visual Studio? TBH, non ho ancora usato QT in combinazione con l'ambiente di sviluppo QNX, quindi non sarò di grande aiuto qui. –