2015-02-05 231 views
2

我所試圖做的事:的OpenMP支持iOS/Android的兼容性

我的工作C/C++代碼建立適用於所有平臺(產品我OS /安卓/ Windows的(移動/桌面)/ MAC/Linux的

有我迄今所做的是什麼:

是有談論的OpenMP與不同的處理器和操作系統的兼容性網上很多環節,但很難從中得出合理的結論,因爲很多文章或帖子都是針對移動目標的。

編號:Link

按我的分析,是的,的OpenMP可以與所有桌面 OS的(Windows/Mac的/ Linux的),幾乎所有的電腦工作有多核處理器現在。所以根本不會有任何問題。

任何人都可以幫助我找到以下答案嗎?

  1. 是否與蘋果設備(新iPad/iPhone的)OpenMP的工作?如果是,是否有任何與OpenMP不兼容的特定設備?似乎OpenMP在IOS中是活躍的,直到Xcode 4.4。但是,在最新版本的xcode中,我無法看到OpenMP的任何選項。例如:Link

  2. 我希望所有更高端的安卓手機有超過1個內核和基於ARM的。根據我的觀點,openMp應該在NDK構建的幫助下與Android平臺一起工作。我的理解是否正確?

+0

是否有IOS任何輸入? – 2vision2

回答

3

我無法回答1,因爲我沒有任何ios設備和開發環境。

關於2.是的,所有高端的android設備都有超過1個內核。實際上很難找到一款只有1核心的低端Android設備。但並非所有的Android設備都是基於ARM的,還有雙核和四核x86和x86_64設備以及arm64-v8a設備。

NDK支持所有這些體系結構,自第9版以來也支持openmp。使用GCC(這是默認的編譯器),並在Android.mk Makefile中添加-fopenmp到您的NDK模塊的CFLAGS和LDFLAGS:

include $(CLEAR_VARS) 
LOCAL_MODULE := yourmodule 
LOCAL_SRC_FILES := yourmodule.c 
LOCAL_CFLAGS += -fopenmp 
LOCAL_LDFLAGS += -fopenmp 
include $(BUILD_SHARED_LIBRARY) 
+0

是否可以使用GCC(ubuntu)構建android共享庫(.so)?它是否進行交叉編譯? – 2vision2

+0

不,爲了做交叉編譯,你應該直接使用ndk工具鏈,而不是你自己的gcc。他們將爲所有支持的平臺進行適當的交叉編譯和鏈接。關於使用ndk(沒有glibc ...)有很多細節,你可以先閱讀安裝包中的文檔。 – ph0b