我試圖將一個大型項目,這使得大量使用C++ 11功能,到樹莓派。該項目使用CMAKE,我正在使用crosstool-ng進行交叉編譯。我在Pi上安裝了依賴關係並將它們複製到本地,並且我設法讓CMAKE找到它們。一些代碼正確構建並生成ARM輸出。但是,大部分代碼都會因混亂的GCC輸出而失敗,我相當肯定與C++ 11 /模板支持有關。例如,我得到的錯誤是這樣的:交叉編譯Raspberry Pi的C++ 11代碼
error: 'mutex' in namespace 'std' does not name a type
(有問題的文件包括<線程>這個錯誤消失,如果我還包括<互斥>,而不是在x86 Ubuntu的一個要求)error: expected class-name before '{' token
(前行{是:template<typename _Res> class __basic_future : public std::__future_base
)error: '__result_type' does not name a type
(這可能發生,因爲上述錯誤的)
這些錯誤看起來像ARM g ++編譯器不太喜歡模板。正在使用的g ++版本是arm-unknown-linux-gnueabi-g++ (crosstool-NG 1.18.0) 4.7.3 20130102 (prerelease)
。
任何人都可以指向正確的方向嗎?
編輯:這裏是G ++看起來像在ps
的文件之一:
arm-unknown-linux-gnueabi-g++ -DprojectCore_EXPORTS -fPIC
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/freetype2
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/glib-2.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/lib/arm-linux-gnueabihf/glib-2.0/include
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/gdk-pixbuf-2.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/gtk-2.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/lib/arm-linux-gnueabihf/gtk-2.0/include
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/cairo
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/pango-1.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/atk-1.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/local/include
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/eigen3
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/flann
-I/home/sagar/workspace/project/include -std=c++0x -Wall -Werror -Wno-deprecated -fPIC -g -O4
-o CMakeFiles/projectCore.dir/src/project/Core/Memory/Array2D.C.o -c /home/sagar/workspace/project/src/project/Core/Memory/Array2D.C
'-std = C++ 11'也許? –
@BartekBanachewicz我添加了爲其中一個文件生成的g ++命令。 -std = C++ 0x就在那裏,我認爲這和C++ 11在這一點上是一樣的。 – sagargp
'std :: mutex'應該在''(或[因此它在這裏說](http://en.cppreference.com/w/cpp/thread/mutex))中定義,所以我不認爲這是一個錯誤 - 如果有什麼錯誤的是,x86版本包含你沒有要求的頭文件,但我不記得在什麼程度上允許。但是加入它不會破壞x86嗎?你有#包括''爲其他? –
Rup