8
votes

Suis-je capable d'utiliser C ++ 11 dans QNX?

J'ai du code multiplate-forme avec certaines fonctionnalités C ++ 11 telles que #include et d'autres. Je serai bientôt utiliser un conseil de 6.6 QNX 6.6 et je me demande si mon code peut compiler dessus et quelles fonctionnalités seront disponibles.

QCC est le fonctionnaire Compilateur QNX C ++, mais je ne trouve aucune documentation citant laquelle C ++ 11 fonctionnalités, ou même les fonctionnalités C ++ en général, elle prend en charge. Est-ce une enveloppe autour de GCC ou sa propre chose? De toute façon, puis-je obtenir ou compiler d'autres compilateurs sur cette plate-forme?


2 commentaires

Votre airforce utilise-t-il-t-il QNX? ;-) Pour autant que je sache QCC, la QCC utilise simplement gcc et à cause de cela, cela dépend du GCC utilisé par QNX 6.6. Une recherche rapide montre que qnx 6.6 utilise GCC 4.7 ( Qnx.com/Developers/articles/ rel_5849_7.html ) et voici une liste des fonctionnalités prises en charge de GCC 4.7: GCC. gnu.org/projects/cxx0x.html


@Marged, je répondrais celui-là. C'est à peu près aussi bon que quiconque va chercher cette question.


3 Réponses :


11
votes

de ce que je sais QCC utilise simplement gcc en interne. Étant donné que vous pouvez utiliser toutes les fonctionnalités fournies par la version de GCC que QNX a décidé de mettre dans leur colis.

juger de la Notes de version de QNX 6.6 GCC 4.7 est utilisé: < / p>

  • Chaîne à outils GCC 4.7, y compris la prise en charge des extensions de vecteur Advanced Intel (AVX)
  • GDB 7.5
  • Nouveau: Binutils 2.24
  • Python 2.7.5, en tant qu'outil de côté hôte

    Les notes de version fournissent un lien à l'information sur GCC 4.7 mais je pense ce lien meilleurs spectacles quelles fonctionnalités spécifiques sont prises en charge. Il y a trop d'informations sur la page liée, à cause de cela, je ne le copie pas. Mais en substance, les états de liaison:

    GCC fournit un support expérimental pour la norme ISO C ++ 2011 2011. Ce support peut être activé avec l'option -std = C ++ 11 ou -Std = GNU ++ 11 Option de compilateur ... Le mode C ++ 11 de GCC implémente une grande partie de la norme C ++ 11 produite par le Comité ISO C ++


0 commentaires

5
votes

La version de GCC utilisée par QCC prend en charge une grande partie de la spécification C ++ 11. Je l'ai utilisé. Il suffit d'ajouter -std = c ++ 11 à la ligne du compilateur.

J'ai trouvé un problème avec le support C ++ 11 sur QNX 6.6. C'était en juillet 2014, les choses peuvent donc avoir changé. Le support de l'initialisation vectorielle ( std :: vecteur {1,2, 3, 4}; ) dans la bibliothèque C ++ 11 expédiée avec QNX 6.6 était cassée. Le code compilerait proprement, mais puis échoue plutôt cryptiquement lorsqu'il est exécuté. Encore une fois, je ne connais pas actuellement l'état actuel de ce problème, alors YMMV.


1 commentaires

Je peux confirmer cela. QNX 6.6 La liste L'initialisation est toujours cassée. Le code va juste rester coincé. J'ai parcouru autour de là et c'est le seul endroit où j'ai vu des gens se plaints de cela.



7
votes

Alors que @marged La réponse semble couvrir absolument tous les aspects importants de votre question, j'aimerais ajouter Il est également possible d'obtenir plus de versions actuelles de tous les outils GNU DEV (comme gcc , gdb ou faire ..). Ceci est officiellement fourni par le personnel de QNX pour "utilisation expérimentale seulement", je suppose 1 . Mais jusqu'à présent, je n'avais que de bonnes expériences avec eux.

Check Out Qnx's Mise à jour Outils de développement de base < / a>

(Vous devez d'abord vous inscrire au portail communautaire QNX pour ouvrir le lien)

 Entrez la description de l'image ici

Vous mettriez ensuite à jour votre système Linux Dev, comme celui-ci:

  • Obtenir des fichiers de ici
    • binutils
    • gcc
    • extraire des fichiers dans un nouveau dossier (Ne pas extraire et écrase directement le dossier existant car il se peut que les liens symboliques ne soient pas mis à jour)
      • qui devrait créer l'hôte et le dossier cible
      • Copiez et collez les nouveaux fichiers dans le dossier QNX actuel et écrasez les fichiers existants
      • éventuellement: mettez à jour la valeur du fichier par défaut de configuration à la nouvelle version du compilateur.
        • E.g. /../ qnx650 / hôte / linux / x86 / etc / qcc / gcc / par défaut
        • Assurez-vous que 32 bits bibliothèques sont installées (sinon):
          • $ sudo apt-get Installer lib32stdc ++ 6
          • S'il n'est pas installé correctement des erreurs comme ce qui suit peut se produire $ I486-PC-NTO-QNX6.5.0-G ++: Erreur lors du chargement des bibliothèques partagées: libstdc ++. SO.6: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type

            1 texte officiel: "Les versions stables des outils de développement de base sont incluses dans le cadre de la pointe de QNX. Vous pouvez télécharger des versions mises à jour de ces outils en cours de développement via ce projet et bénéficier de leurs améliorations plus tôt!"


2 commentaires

J'ai un problème seulement avec celui-ci: qtcore / qglobal.h: 39: ERREUR: CSTDDEF: Aucun fichier ou annuaire de ce type inclure aucune idée? Lors de la commutation à 4.6.3 (défaut précédent) tout correct


Cela ressemble plus à votre environnement QT n'est pas installé et configuré correctement (Creator Qt). Vous utilisez peut-être Mme Visual Studio? Tbh, je n'ai pas encore utilisé Qt en combinaison avec l'environnement de devir Qnx, je ne serai donc pas une grande partie d'aide ici.