我有一台带有 armv5 处理器的 wifi 摄像头,想要交叉编译和 alljoyn 标准核心、服务框架,并且想要制作通知生产者应用程序。
但是我在交叉编译 alljoyn 时被卡住了。我正在使用gcc 4.3.3 版的 codesourcery arm 交叉编译器编译 alljoyn
最初我使用相同的命令,用于编译标准核心和服务框架。刚刚为 arm 和交叉编译器添加了CROSS_COMPILE和CPU标志。这是使用的命令,编译过程失败并出现与-std=c++11相关的一些错误
命令:
scons BINDINGS=cpp WS=off BT=off ICE=off OS=linux CPU=arm CROSS_COMPILE="/home/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-" SERVICES="about,notification,控制面板、配置、入职、sample_apps"
错误:
……
打印将头文件复制到“构建”目录
……
/* 编译第一个 cc 文件 */
cc1plus:错误:无法识别的命令行选项“-std=c++11”
scons: *** [build/linux/arm/debug/obj/services/config/cpp/samples/ConfigClientSample/ConfigClientMain.o] 错误 1
在这次失败之后,我找到了以下链接, https://wiki.allseenalliance.org/develop/building_and_running
它说我们可以在交叉编译时为 openwrt 编译 alljoyn。所以我准备并执行了以下命令:
scons BINDINGS=cpp WS=off BT=off ICE=off OS=openwrt CPU=openwrt TARGET_PATH=/home/CodeSourcery/Sourcery_G++_Lite/bin/ TARGET_CC=arm-none-linux-gnueabi-gcc TARGET_CFLAGS="-std= c++0x" TARGET_CPPFLAGS="-std=c++0x" TARGET_CXX=arm-none-linux-gnueabi-g++ TARGET_LINK=arm-none-linux-gnueabi-gcc TARGET_LINKFLAGS=""TARGET_AR=""TARGET_RANLIB="" STAGING_DIR=/usr/lib/x86_64-linux-gnu SERVICES="关于,通知,控制面板,配置,入职,sample_apps"
但是在编译开始之前出现错误,
scons: 读取 SConscript 文件...
检查 c++ 编译器对 -std=c++11 标志的支持...否
检查 c++ 编译器对 -std=c++0x 标志的支持...否
*** 编译器太旧,无法构建 AllJoyn。中止。
所以这是我的问题,
1.不使用openwrt可以交叉编译alljoyn标准客户端和服务吗?
2.使用openwrt进行交叉编译会影响alljoyn的任何功能吗?
3.我应该怎么做才能克服c++11/c++0x错误,我应该找到新的gcc版本来交叉编译我的代码。
如果有人为任何平台交叉编译了 alljoyn 标准核心和服务框架,请告诉我,请为此提供步骤/命令。
提前致谢。普拉提克