我正在尝试为运行QNX操作系统的Sabre I.MX6开发板构建应用程序。我使用QNX Momentics v6.5来交叉编译我的代码。我写了一个简单的"Hello World"代码,我正试图用新的c标准编译它,因为我正在进行的项目需要这样做。
当我尝试使用任何标志进行编译时,比如-std=c99
或-std=c11
,它会在编译过程中抛出一个错误,说
cc: unknown Option -std=c99" or "cc: unknown Option -std=c11"
。
我可以看到它使用的编译器是gcc 4.4.2
。
我不确定这个版本的gcc
是否不支持c99
,或者我传递的标志是否应该与QNX Momentics不同。
QNX 6.5不支持开箱即用的C++11,因为它使用的是旧的GNU编译器(gcc 4.4.2)。然而,QNX软件中心对QNX 6.5进行了几次更新,可以更新到gcc 4.8.3,这将为您提供相当不错的C++11支持。您需要在QNX网站上创建一个帐户,然后:
- 从下载适用于主机的Binutils 2.24(例如适用于WIndows的win32-Binutils-2.224.zip)http://community.qnx.com/sf/frs/do/listReleases/projects.toolchain/frs.binutils.
- 从下载适用于主机的GCC 4.8.3(例如适用于Windows的win32-GCC-4.8.3-qnx65x.zip)http://community.qnx.com/sf/frs/do/viewRelease/projects.toolchain/frs.gcc.gcc_4_8.
- 展开这两个档案-这将创建
host
和target
文件夹 - 复制&将新文件夹粘贴到QNX文件夹中,覆盖文件
- 编辑
host/win32/x86/etc/qcc/gcc/default
以更改默认编译器:DIR=4.8.3
编译时添加以下标志:
-Vgcc_ntox86_gpp
到QCC(对于x86目标)以获得gcc 4.8.3标头- CCD_ 12转换为QCC,使其使用C++11
QNX 6.5和gcc 4.4.2不支持C++11。有关更多信息,请参阅QCC文档。最好的方法是通过-std=c++0x
或-std=gun++0x
获得不完整的实验性支持。
QNX 6.6包括gcc 4.7.3,它确实支持实验C++11,而QNX 7.0使用gcc 5.4.0,它完全支持C++11和C++14。
gcc C++标准支持的全部细节可以在gcc标准页面上找到。