ファイルから Android NDK ツールチェーンのアセンブラーのシンボルを定義する簡単な方法はありAndroid.mk
ますか?
私の目的は、ARMV6 または ARMV7A EABIS 用にコンパイルおよび調整された複数の .C および .s (アセンブラー) ファイルから構成されるネイティブ ライブラリを構築できるようにすることです。必要なすべての条件付きコンパイルは、アプリケーションの APP_ABI 値を変更するだけで駆動されます。 .mk ファイル。
最初に、ifeq()
で使用可能なディレクティブを使用しAndroid.mk
て APP_ABI 値の値を照会し、ビルド スクリプトのさまざまな部分を条件付きで実行することに成功しました。
次に、次のように、(-D を介して) 条件付きでシンボルを挿入するために、この機能を使用しようとしました。
# Compilation Flags
ifeq ($(TARGET_ARCH_ABI),armeabi)
LOCAL_CFLAGS += -DTARGET_ARMEABI -marm -mtune='arm1136jf-s' -ffast-math -O3 -march=armv6 -fvisibility=hidden
else
#armeabi-v7a
LOCAL_CFLAGS += -marm -ffast-math -O3 -march=armv7-a -fvisibility=hidden
endif
C ソース コード ファイルでは TARGET_ARMEABI シンボルが正しく定義されていることがわかりますが、アセンブラー ファイルでは見つかりません。 (アーキテクチャに従って適切な EABI 属性を定義するには、これが必要です)。これは、アセンブリ言語ファイルで条件付きで EABI 属性を定義しようとする方法の例です。
.ifdef TARGET_ARMEABI
.arch armv6
.fpu softvfp
.eabi_attribute 23, 1
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 2
.eabi_attribute 18, 4
.else
.arch armv7-a
.eabi_attribute 27, 3
.fpu vfp
.eabi_attribute 23, 1
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 2
.eabi_attribute 18, 4
.endif
ポインタや提案は大歓迎です。