0

我正在尝试为运行 QNX 操作系统的 Sabre i.MX6 开发板构建应用程序。我正在使用 QNX Momentics v6.5 来交叉编译我的代码。我编写了一个简单的“Hello World”代码,并尝试使用新的 c 标准对其进行编译,因为我正在处理的项目需要它。

当我尝试使用任何标志进行编译时,比如说-std=c99or -std=c11,它会在编译过程中抛出一个错误说

cc: unknown Option -std=c99" or "cc: unknown Option -std=c11".

我可以看到它使用的编译器是gcc 4.4.2.

我不确定这个版本gcc是否不支持c99,或者我传递的标志是否应该与 QNX Momentics 不同。

4

2 回答 2

1

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(例如 WIN32-binutils-2.24.zip 用于 WINdows)。
  2. 从http://community.qnx.com/sf/frs/do/viewRelease/projects.toolchain/frs.gcc为您的主机下载 GCC 4.8.3(例如 Windows 的 win32-gcc-4.8.3-qnx65x.zip).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 标头。
  • -Wc,-std=c++11到 QCC 以使其使用 C++ 11。
于 2019-09-11T14:27:44.623 回答
0

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

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

可以在 gcc 标准页面上找到 gcc C++ 标准支持的完整详细信息。

于 2018-07-16T20:54:45.277 回答