2017-06-09 71 views
0

ACE + TAO:6.3.2
OpenDDS:3.11
主机编译器:GCC 5.4ACE + TAO/OpenDDS支持64位GCC工具链吗?

正如我交叉编译为Android OpenDDS,我期待在ACE_wrappers /编译/ ARM /包括/ makeinclude/platform_android 。GNU似乎为ACE进行交叉编译,似乎只为ARM-v7a构建。

我之所以这样说,是因为在编译我的应用程序中的自动生成文件((它来自使用* .idl上的opendds_idl)时出现以下错误),以及一堆“In从”行包含的文件,当我编译代码带来了一些错误国旗的CPU架构之前结束了......

[exec] /home/me/tools/crystax-ndk/sources/cxx-stl/gnu-libstdc++/5/include/limits:1601:7: internal compiler error: Illegal instruction 
[exec]  max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; } 
[exec]  ^

我见过这样的事情。所以我的想法是,也许有在我的应用上使用的GCC上的一些不兼容的工具链设置,以及ACE + TAO/OpenDDS使用的那些设置?platform_android.GNU中的CROSS_COMPILE变量是arm-linux-androideabi- ......据我所知,它是一个32位工具链,即arm-v7a,我看不到v8a r eferences。然而在我的应用程序中,我使用的是aarch64-linux-android-5。这些应该兼容吗?工具链可以更改吗?

我想要做的是为目标架构和ABI构建ACE + TAO/OpenDDS/my-application ... arm64:arm64-v8a并使用NDK工具链和目标ABI ... aarch64-linux -android-5:arm64-v8a。

想法?

回答

1

这应该是可能的,但可能配置文件已过时。首先,更新最新的ACE + TAO 6.3.4。其次,检查include/makeinclude/platform_android.GNU文件,看看你的目标是否在那里。这可能是一些小的更新是必要的,如果是这样,请打开一个拉请求https://github.com/DOCGroup/ACE_TAO进行必要的更改。搜索arm-v7a并查看该地点是否需要检查arm-v8a。

+0

会做一个拉取请求,对platform_android.GNU进行更新。 – Ender

+0

创建请求。 – Ender

+0

合并您的pull请求,将成为下一个ACE/TAO微版本的一部分(尚未安排) –