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

How do I use different compilation standards in QNX Momentics 6.5?

我正在尝试为运行 QNX OS 的 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 和 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

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.
  2. 下载适用于您的主机的 Binutils 2.24(例如 WIndows 的 win32-binutils-2.24.zip)
  3. http://community.qnx.com/sf/frs/do/viewRelease/projects.toolchain/frs.gcc.gcc_4_8.
  4. 下载主机的 GCC 4.8.3(例如 Windows 的 win32-gcc-4.8.3-qnx65x.zip)
  5. 展开两个存档 - 这将创建 hosttarget 文件夹。
  6. 将新文件夹复制并粘贴到 QNX 文件夹中,覆盖文件。
  7. 编辑 host/win32/x86/etc/qcc/gcc/default 以更改默认编译器:DIR=4.8.3

编译时添加以下标志:

  • -Vgcc_ntox86_gpp 到 QCC(对于 x86 目标)以获得 gcc 4.8.3 headers.
  • -Wc,-std=c++11 到 QCC 以使其使用 C++ 11。