c-如何在QNX Momentics 6.5中使用不同的编译标准



我正在尝试为运行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网站上创建一个帐户,然后:

  1. 从下载适用于主机的Binutils 2.24(例如适用于WIndows的win32-Binutils-2.224.zip)http://community.qnx.com/sf/frs/do/listReleases/projects.toolchain/frs.binutils.
  2. 从下载适用于主机的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.
  3. 展开这两个档案-这将创建hosttarget文件夹
  4. 复制&将新文件夹粘贴到QNX文件夹中,覆盖文件
  5. 编辑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标准页面上找到。

最新更新