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

时间:2018-07-02 13:14:02

标签: c gcc qnx qnx-neutrino momentics

我正在尝试为运行QNX OS的Saber 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是否应该传递我所传递的标志。

2 个答案:

答案 0 :(得分:0)

QNX 6.5和gcc 4.4.2不支持C ++ 11。有关更多信息,请参见the QCC docs。 您将获得的最好结果是通过-std=c++0x-std=gun++0x的不完整和实验性支持。

QNX 6.6包含确实具有实验性C ++ 11支持的gcc 4.7.3,而QNX 7.0使用gcc 5.4.0具有完整的C ++ 11和C ++ 14支持。

有关gcc C ++标准支持的详细信息,请参见on the gcc standards page

答案 1 :(得分:0)

QNX 6.5不使用现成的C ++ 11,因为它使用的是旧的GNU编译器(gcc 4.4.2)。但是,QNX软件中心对QNX 6.5进行了多次更新,使您可以更新到GCC 4.8.3,这将为您提供不错的C ++ 11支持。 您将需要在QNX网站上创建一个帐户,然后:

  1. http://community.qnx.com/sf/frs/do/listReleases/projects.toolchain/frs.binutils下载适用于您主机的Binutils 2.24(例如,用于Windows的win32-binutils-2.24.zip)。
  2. http://community.qnx.com/sf/frs/do/viewRelease/projects.toolchain/frs.gcc.gcc_4_8下载适用于您主机的GCC 4.8.3(例如,对于Windows为win32-gcc-4.8.3-qnx65x.zip)。
  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标头。
  • -Wc,-std=c++11转到QCC以使其使用C ++ 11。