我有一些跨平台代码,其中包含一些C ++ 11功能,如#include <thread>
和其他功能。我很快就会使用QNX 6.6主板,我想知道我的代码是否可以在其上编译,以及哪些功能可用。
QCC是官方的QNX C ++编译器,但我找不到任何文档引用C ++ 11的功能,或者它支持哪些C ++功能。这是GCC或其自身的包装吗?无论哪种方式,我可以在这个平台上获得或编译其他编译器吗?
答案 0 :(得分:9)
据我所知qcc
在内部使用gcc
。因此,您可以使用QNX决定放入其包中的gcc
版本提供的所有功能。
从使用release notes of QNX 6.6 gcc 4.7来判断:
发行说明提供了有关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社区门户网站以打开链接)
然后您将更新您的Linux开发系统:
host
和target
文件夹/../qnx650/host/linux/x86/etc/qcc/gcc/default
$ 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。