【问题标题】:Does ACE+TAO/OpenDDS support a 64-bit GCC toolchain?ACE+TAO/OpenDDS 是否支持 64 位 GCC 工具链?
【发布时间】:2017-06-09 01:24:45
【问题描述】:

ACE+TAO:6.3.2
OpenDDS:3.11
宿主编译器:GCC 5.4

当我为 Android 交叉编译 OpenDDS 时,我正在查看 ACE_wrappers/build/arm/include/makeinclude/platform_android.GNU,它似乎为 ACE 进行了交叉编译,而且它似乎只为 ARM 构建- v7a。

我这么说的原因是,在我的应用程序中编译自动生成的文件((来自在 *.idl 上使用 opendds_idl)时,以及在一堆“在文件中包含来自" 行,以 ... 结尾。

 [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]        ^

我以前在编译代码时看到过类似的情况,这些代码对 CPU 架构有一些错误的标志。所以我的想法是,我在我的应用程序上使用的 GCC 上可能存在一些不兼容的工具链设置以及 ACE+TAO/OpenDDS 使用的那些设置? platform_android.GNU 中的 CROSS_COMPILE 变量是 arm-linux-androideabi- ...据我所知,它是一个 32 位工具链,即 arm-v7a,我看不到 v8a 引用。然而在我的应用程序中,我使用的是 aarch64-linux-android-5。这些应该兼容吗?工具链可以改吗?

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

想法?

【问题讨论】:

    标签: android ace data-distribution-service opendds


    【解决方案1】:

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

    【讨论】:

    • 将执行拉取请求,对 platform_android.GNU 进行更新。
    • 已创建请求。
    • 合并了您的拉取请求,将成为下一个 ACE/TAO 微版本的一部分(尚无时间表)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2014-08-08
    • 2021-09-14
    相关资源
    最近更新 更多