2017-06-09 152 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微版本的一部分(尚未安排) –