2015-12-09 48 views
5

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

QCC是官方的QNX C++編譯器,但我找不到任何文檔引用了哪些C++ 11功能,甚至不支持其通用的C++功能。這是GCC還是它自己的東西的包裝?無論哪種方式,我可以在此平臺上獲得或編譯其他編譯器嗎?

+0

您的Airforce使用的是QNX嗎?;-)據我所知,qcc只是使用'gcc',這取決於QNX 6.6使用哪個gcc。快速搜索顯示QNX 6.6正在使用gcc 4.7(http://www.qnx.com/developers/articles/rel_5849_7.html),這裏列出了支持的功能gcc 4.7:https://gcc.gnu.org/projects/cxx0x.html – Marged

+1

@Marged我會回答這個問題,這個問題和任何人想要得到這個問題一樣好。 – user4581301

回答

7

從我所知道的qcc只是在內部使用gcc。正因爲如此,您可以使用QNX決定將其包裝中的gcc版本提供的所有功能。

release notes of QNX 6.6 GCC 4.7來看時:

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

該發行說明提供了有關gcc信息的鏈接4.7但我認爲this link可以更好地顯示支持哪些特定功能。鏈接頁面上的信息太多,因爲我不會複製它。但實質上鍊接狀態如下:

GCC provides experimental support for the 2011 ISO C++ standard. This support can be enabled with the -std=c++11 or -std=gnu++11 compiler option ... GCC's C++11 mode implements much of the C++11 standard produced by the ISO C++ committee

3

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。

6

@Marged的回答似乎涵蓋你的問題的絕對每一個重要的方面,我想補充的是,還可能得到的所有的GNU開發工具更新的版本(如GCCGDB使 ..)。這是QNX工作人員正式提供的「僅供實驗使用」,我猜。但到目前爲止,我只與他們有過良好的經歷。

退房QNX的更新Core Development Tools

(您需要首先註冊到QNX社區門戶打開鏈接)

enter image description here

然後,您可以更新您的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的一部分包含了穩定版本的核心開發工具。您可以下載目前正在通過此項目開發的這些工具的更新版本,並從之前的增強功能中獲益!「

+0

我只有這個問題:'QtCore/qglobal.h:39:error:cstddef:沒有這樣的文件或目錄#include '有什麼想法?當切換到4.6.3(默認以前)一切正常 –

+0

聲音更多l您的QT環境未正確安裝和配置(Qt Creator)。你可能使用MS Visual Studio? TBH,我還沒有將QT與QNX開發環境結合使用,所以我在這裏沒有多大的幫助。 –

相關問題