[英]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
版本提供的所有功能。
發行說明提供了有關gcc 4.7的信息的鏈接,但我認為此鏈接更好地顯示了支持哪些特定功能。 鏈接頁面上的信息太多,因為我沒有復制它。 但實質上鏈接指出:
GCC為2011 ISO C ++標准提供實驗支持。 可以使用-std = c ++ 11或-std = gnu ++ 11編譯器選項啟用此支持... GCC的C ++ 11模式實現了ISO C ++委員會生成的大部分C ++ 11標准
雖然@Marged的答案似乎絕對涵蓋了你問題的每個重要方面,但我想補充說,還可以獲得所有GNU開發工具的更新版本(如gcc , gdb或make ..)。 這是由QNX工作人員正式提供的“僅用於實驗”,我猜1 。 但到目前為止,我只有很好的經驗。
查看QNX更新的核心開發工具
(您需要先注冊到QNX社區門戶才能打開鏈接)
然后,您將更新您的Linux開發系統:
host
和target
文件夾 /../qnx650/host/linux/x86/etc/qcc/gcc/default
$ 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.