ACE+TAO: 6.3.2
OpenDDS: 3.11
ホスト コンパイラ: GCC 5.4
Android用のOpenDDSをクロスコンパイルするとき、ACEのクロスコンパイルを行うように見えるACE_wrappers/build/arm/include/makeinclude/platform_android.GNUを見ていますが、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.
考え?