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。
想法?