0

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.

考え?

4

1 に答える 1