【发布时间】:2012-09-18 19:52:15
【问题描述】:
我正在尝试配置 Android.mk 以交叉编译本机代码以支持不同的芯片组,即 armeabi、mips 和 x86。我知道我可以通过以下方式配置 Application.mk 来编译不同芯片组的源代码:
APP_ABI := all
这将触发 Android-NDK 的构建脚本来编译所有芯片组的源代码。但是,我想动态地告诉 Android.mk 寻找使用不同芯片组编译的不同静态库依赖项。
# Get the architecture info
ARCH := ????
include $(CLEAR_VARS)
LOCAL_MODULE:= mylib
LOCAL_SRC_FILES:= build/lib/libxxx_$(ARCH).a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
这可能吗?如果是这样,任何人都可以建议如何做到这一点?
更新:我在 Application.mk 中尝试过这样的事情:
APP_ABI := armeabi armeabi-v7a mips x64使用 Android.mk:
# Get the architecture info ARCH := $(APP_ABI) include $(CLEAR_VARS) LOCAL_MODULE:= mylib LOCAL_SRC_FILES:= build/lib/libxxx_$(ARCH).a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) include $(PREBUILT_STATIC_LIBRARY)但出现以下错误:
The LOCAL_SRC_FILES for a prebuilt static library should only contain one item这是有道理的。我想在 Application.mk 中传递 APP_ABI := all 并能够 动态引用它。有什么想法吗?
【问题讨论】:
-
如果您查看 ndk 和其他库,他们使用诸如
#ifdef __arm__之类的定义,但我不确定它是在哪里定义或标准化的 -
嗨,我想做同样的事情。你能给我举个 Andorid.mk 文件的例子,以及把它放在应用程序的什么地方吗??
标签: android android-ndk