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

时间:2015-12-09 00:02:21

标签: c++ c++11 qnx

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

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

3 个答案:

答案 0 :(得分:9)

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

从使用release notes of QNX 6.6 gcc 4.7来判断:

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

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

  

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

答案 1 :(得分:7)

尽管@Marged的答案似乎涵盖了您问题的所有重要方面,但我想补充说,还可以获得所有GNU开发工具的更多当前版本(比如 gcc gdb make ..)。这是由QNX工作人员正式提供的,仅用于实验性使用&#34;,我猜 1 。但到目前为止,我只有很好的经历。

查看QNX已更新的Core Development Tools

(您需要首先注册到QNX社区门户网站以打开链接)

enter image description here

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

  • here获取文件
    • Binutils的
    • GCC
  • 将文件解压缩到新文件夹中 (不要直接提取和覆盖现有文件夹,因为符号链接可能不会更新)
    • 应该创建hosttarget文件夹
  • 复制&amp;将新文件粘贴到实际的QNX文件夹中并覆盖现有文件
  • 可选:将配置默认文件的值更新为新的编译器版本
    • e.g。 /../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官方文本:&#34;核心开发工具的稳定版本作为QNX Momentics的一部分包含在内。您可以下载当前正在通过此项目开发的这些工具的更新版本,并从之前的增强功能中受益!&#34;

答案 2 :(得分:4)

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

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