【问题标题】:C++ 11 in vxworksvxworks 中的 C++ 11
【发布时间】:2020-09-30 01:26:44
【问题描述】:

我是 VxWorks 的新手,我正在 VxWorks 平台上使用 C++ 开发软件。我想知道 VxWorks 编译器是否支持 C++ 11 标准。我问这个问题的原因是因为没有可用的 shrink_to_fit() std::vector 函数(这个函数是在 c++ 11 标准中引入的)。所以我想知道有没有办法在VxWorks中用C++ 11标准编译代码。

【问题讨论】:

  • 我也使用 VxWorks,但我对此表示高度怀疑。我没有足够的信息来确切地说它是否存在,但直到最近他们在模板方面遇到了重大问题。因此,我们在 C 语言中停留的时间最长。我会在工作中打听一下,看看这里的其他人是否比我知道的更多。因为我也很想拥有这个。
  • @Tails 感谢您的帮助

标签: c++ vxworks


【解决方案1】:

有可用于 vxWorks 的商业版本的 g++,支持 c++11。据我所知,这些 g++ 端口可用于 vxWorks 7.0 或更高版本。

【讨论】:

  • 嗨,KimKulling,你知道任何方法可以在不使用互斥锁的情况下自动设置和获取任何变量(char int float)的值,这些变量在 vxworks 和 linux 中都可以使用
  • 如果您能够使用 C++11:请检查 cppreference:de.cppreference.com/w/cpp/atomic/atomic
  • 感谢您的回复。实际上我们使用的是 vxworks 6.7 和 ppcgnu 编译器。所以我认为这个版本在vxworks 6.7中不支持c++11标准
【解决方案2】:

我假设您使用的是 WindRiver (diab) 编译器,这也是我们用于 VxWorks 平台的编译器。如果是这种情况,我在他们的网站上找到了一个 pdf,其中非常清楚地概述了它们仅符合 C++03。

Link to the pdf

支持 ANSI C89、C99 和 C++ 2003

显然,VxWorks 也支持 GNU 和 ICC 编译器,但我不太熟悉它们如何与 VxWorks 一起工作。

【讨论】:

  • 嗨,DeathTails,你知道任何方法可以在不使用互斥锁的情况下自动设置和获取在 vxworks 和 linux 中都可以使用的任何变量(char int float)的值
  • @Harry 我对 VxWorks 线程不太熟悉。我知道我们为我们的应用程序使用了他们的任务和信号量锁,但我对他们的原子性或与 Linux 的兼容性一无所知。您最好将其作为一个单独的问题提出。
【解决方案3】:

仅在 VxWorks 7 中。VxWorks7 附带的 diab 仍然不支持 C++11。

GnatPro 17.1 附带 gcc 6.2.1 并可与 VxWorks 一起使用。

您可能对以下内容感兴趣: http://en.cppreference.com/w/cpp/compiler_support

【讨论】:

    【解决方案4】:

    最新的 vxworks 版本附带 c++17 支持(C++17、Boost、Python 和 Rust 合集) https://www.windriver.com/news/press/pr.html?ID=22444

    【讨论】:

      【解决方案5】:

      在新的 Vxworks 7 SR600 中,clang 编译器支持 C++11。

      【讨论】:

        【解决方案6】:

        我在实时嵌入式系统中工作了大约 25 年,主要是在航空电子领域,我记得,标准模板库通常是不允许的,因为它们使用不受控制的动态内存分配和不受控制的线程创建。也许这已经改变了,但这可能就是大多数 VXworks 避开 STL 的原因。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-06
          • 2014-08-10
          • 2013-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-16
          • 1970-01-01
          相关资源
          最近更新 更多