簡體   English   中英

我能在QNX中使用C ++ 11嗎?

[英]Am I able to use C++11 in QNX?

我有一些跨平台代碼,其中包含一些C ++ 11功能,如#include <thread>等。 我很快就會使用QNX 6.6板,我想知道我的代碼是否可以在其上編譯,以及哪些功能可用。

QCC是官方的QNX C ++編譯器,但我找不到任何文檔引用C ++ 11的功能,或者它支持哪些C ++功能。 這是GCC或其自身的包裝嗎? 無論哪種方式,我可以在這個平台上獲得或編譯其他編譯器嗎?

據我所知, qcc只是在內部使用gcc 因此,您可以使用QNX決定放入其包中的gcc版本提供的所有功能。

QNX發布說明來看,使用6.6 gcc 4.7:

  • GCC 4.7工具鏈,包括對英特爾高級矢量擴展指令(AVX)的支持
  • GDB 7.5
  • 新:Binutils 2.24
  • Python 2.7.5,作為主機端工具

發行說明提供了有關gcc 4.7的信息的鏈接,但我認為此鏈接更好地顯示了支持哪些特定功能。 鏈接頁面上的信息太多,因為我沒有復制它。 但實質上鏈接指出:

GCC為2011 ISO C ++標准提供實驗支持。 可以使用-std = c ++ 11或-std = gnu ++ 11編譯器選項啟用此支持... GCC的C ++ 11模式實現了ISO C ++委員會生成的大部分C ++ 11標准

雖然@Marged的答案似乎絕對涵蓋了你問題的每個重要方面,但我想補充說,還可以獲得所有GNU開發工具的更新版本(如gccgdbmake ..)。 這是由QNX工作人員正式提供的“僅用於實驗”,我猜1 但到目前為止,我只有很好的經驗。

查看QNX更新的核心開發工具

(您需要先注冊到QNX社區門戶才能打開鏈接)

在此輸入圖像描述

然后,您將更新您的Linux開發系統:

  • 這里獲取文件
    • 在Binutils
    • GCC
  • 將文件解壓縮到新文件夾(不要直接提取和覆蓋現有文件夾,因為它可能不會更新符號鏈接)
    • 應該創建hosttarget文件夾
  • 將新文件復制並粘貼到實際的QNX文件夾中並覆蓋現有文件
  • 可選:將配置默認文件的值更新為新的編譯器版本
    • 例如/../qnx650/host/linux/x86/etc/qcc/gcc/default
  • 確保安裝32位庫(如果沒有):
    • $ sudo apt-get install lib32stdc++6
    • 如果沒有正確安裝,可能會出現以下錯誤: $ i486-pc-nto-qnx6.5.0-g++: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

1官方文本:“核心開發工具的穩定版本作為QNX Momentics的一部分包含在內。您可以下載當前通過該項目開發的這些工具的更新版本,並從之前的增強中受益!”

qcc使用的gcc版本確實支持C ++ 11規范的大部分內容。 我用過它。 只需將-std=c++11添加到編譯器行即可。

我確實在QNX 6.6上發現了C ++ 11支持的一個問題。 這是在2014年7月,所以情況可能已經改變。 QNX 6.6附帶的C ++ 11庫中的向量初始化( std::vector<int> {1,2, 3, 4}; )的支持被打破了。 代碼可以干凈地編譯,但在運行時會相當失敗。 同樣,我目前還不知道這個問題的當前狀態,所以YMMV。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM