我能在QNX中使用C++ 11吗?

Lau*_*ura 8 c++ qnx c++11

我有一些跨平台代码,其中包含一些C++ 11等功能#include <thread>.我很快就会使用QNX 6.6板,我想知道我的代码是否可以在其上编译,以及哪些功能可用.

QCC是官方的QNX C++编译器,但是我找不到任何文档引用C++ 11的功能,或者它支持哪些C++功能.这是GCC或其自身的包装吗?无论哪种方式,我可以在这个平台上获得或编译其他编译器吗?

Mar*_*ged 11

据我所知qcc,只是在gcc内部使用.因此,您可以使用gccQNX 版本提供的所有功能,并决定将其放入其包中.

QNX发布说明来看,使用6.6 gcc 4.7:

  • GCC 4.7工具链,包括对英特尔高级矢量扩展指令(AVX)的支持
  • GDB 7.5
  • 新:Binutils 2.24
  • Python 2.7.5,作为主机端工具

发行说明提供了有关gcc 4.7的信息的链接,但我认为此链接更好地显示了支持哪些特定功能.链接页面上的信息太多,因为我没有复制它.但实质上链接指出:

GCC为2011 ISO C++标准提供实验支持.可以使用-std = c ++ 11或-std = gnu ++ 11编译器选项启用此支持... GCC的C++ 11模式实现了ISO C++委员会生成的大部分C++ 11标准


Jim*_*ams 7

@Marged的回答似乎涵盖你的问题的绝对每一个重要的方面,我想补充的是,还可能得到的所有的GNU开发工具更新的版本(比如GCC,GDB使 ..).这是由QNX工作人员正式提供的"仅用于实验",我猜1.但到目前为止,我只有很好的经验.

查看QNX更新的核心开发工具

(您需要先注册到QNX社区门户才能打开链接)

在此输入图像描述

然后,您将更新您的Linux开发系统:

  • 这里获取文件
    • 在Binutils
    • GCC
  • 将文件解压缩到新文件夹(不要直接提取和覆盖现有文件夹,因为它可能不会更新符号链接)
    • 应该创建hosttarget文件夹
  • 将新文件复制并粘贴到实际的QNX文件夹中并覆盖现有文件
  • 可选:将配置默认文件的值更新为新的编译器版本
    • 例如 /../qnx650/host/linux/x86/etc/qcc/gcc/default
  • 确保安装32位库(如果没有):
    • $ sudo apt-get install lib32stdc++6
    • 如果安装不正确,可能会发生以下错误 $ 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官方文本:"核心开发工具的稳定版本作为QNX Momentics的一部分包含在内.您可以下载当前通过该项目开发的这些工具的更新版本,并从之前的增强中受益!"


jwe*_*rny 5

qcc 使用的 gcc 版本确实支持大部分 C++11 规范。我用过。只需添加-std=c++11到编译器行。

我确实在 QNX 6.6 上发现了 C++11 支持的一个问题。这是在 2014 年 7 月,所以事情可能已经改变了。std::vector<int> {1,2, 3, 4};QNX 6.6 附带的 C++11 库中对向量初始化 ( )的支持被破坏。代码可以干净地编译,但在运行时会相当神秘地失败。同样,我目前不知道这个问题的当前状态,所以 YMMV。