NDK构建 - 指定每个体系结构的链接器设置

时间:2014-04-10 09:35:56

标签: android-ndk

我的Application.mk设置为构建arm以及x86共享库:

APP_ABI: - armeabi-v7a x86

我有预构建的openssl静态库:

libcrypto_v7a.a
libcrypto_x86.a
libssl_v7a.a
libssl_x86.a

这些文件已复制到jni / inc目录:

非常感谢您在设置Android.mk时的帮助,以便它选择适当的库链接:

LOCAL_LDLIBS    := -llog -L$(LOCAL_PATH)/inc/ -lcrypto_v7a -lssl_v7a

LOCAL_LDLIBS    := -llog -L$(LOCAL_PATH)/inc/ -lcrypto_x86 -lssl_x86

也许定义了一种$(ARCH)类型的变量,我可以利用这个变量:

LOCAL_LDLIBS    := -llog -L$(LOCAL_PATH)/inc/ -lcrypto_$(ARCH) -lssl_$(ARCH)

2 个答案:

答案 0 :(得分:3)

如何使用ifeqTARGET_ARCH

LOCAL_LDLIBS := -llog -L$(LOCAL_PATH)/inc/ 
ifeq ($(TARGET_ARCH),arm)
  LOCAL_LDLIBS += -lcrypto_v7a -lssl_v7a
else
  ifeq ($(TARGET_ARCH),x86)
    LOCAL_LDLIBS += -lcrypto_x86 -lssl_x86
  endif
endif

答案 1 :(得分:3)

另一种选择是:

MY_LDLIBS_arm := -lcrypto_v7a -lssl_v7a
MY_LDLIBS_x86 := -lcrypto_x86 -lssl_x86
MY_LDLIBS_mips := ...

LOCAL_LDLIBS += $(MY_LDLIBS_$(TARGET_ARCH))

更容易阅读和写作。