android.mk 编译多个,opencv – 如何在同一个Android.mk中编译两个不同的库,将其中一个链接到另一个...

我有2个不同库的源代码,FooMain和FooSecondary. FooSecond由FooMain使用,因此,makefile必须编译First FooSecondary,然后编译FooMain,然后将FooSecondary链接到FooMain.

我的Android.mk是:

LOCAL_PATH:= $(call my-dir)

# Foo Secondary lib:

# Clear vars

include $(CLEAR_VARS)

# Target Build

LOCAL_ARM_MODE := arm

# Library Name

LOCAL_MODULE := FooSecondary

# Set All SRC_FILES Together

SRC_FILES := $(wildcard $(LOCAL_PATH)/FooSecondary/src/*.c)

SRC_FILES := $(SRC_FILES:$(LOCAL_PATH)/%=%)

LOCAL_SRC_FILES = $(SRC_FILES)

# Enable Log support

LOCAL_LDLIBS = -llog

# C Flags - Max optimization

LOCAL_CFLAGS := -O3 -mno-thumb

# C++ Flags - Max optimization

LOCAL_CPPFLAGS := -O3 -mno-thumb

# Compile as Shared Library

include $(BUILD_SHARED_LIBRARY)

# Foo Secondary lib:

# Clear vars

include $(CLEAR_VARS)

# Include OpenCV

include 3rdparty/OpenCV-2.4.3-rc-android-sdk/sdk/native/jni/OpenCV.mk

# Target Build

LOCAL_ARM_MODE := arm

# Library Name

LOCAL_MODULE := FooMain

# Set All SRC_FILES Together

SRC_FILES := $(wildcard $(LOCAL_PATH)/FooMain/src/*.cpp)

SRC_FILES := $(SRC_FILES:$(LOCAL_PATH)/%=%)

LOCAL_SRC_FILES = $(SRC_FILES)

LOCAL_SHARED_LIBRARIES := libFooSecondary

LOCAL_LDLIBS := -L$(LOCAL_PATH)/../libs/armeabi

LOCAL_LDLIBS += -lz -lm -ldl -lGLESv2 -lEGL -llog -lFooSecondary

LOCAL_CFLAGS := -O2 -mno-thumb -Wno-write-strings

LOCAL_CPPFLAGS := -O2 -mno-thumb -Wno-write-strings

# Compile as Shared Library

include $(BUILD_SHARED_LIBRARY)

我的Application.mk是:

APP_CPPFLAGS := -frtti -fexceptions

APP_STL := gnustl_static

APP_ABI := armeabi-v7a

但是,当我使用ndk-build编译Android.mk时,我得到下一个错误:

Compile arm : libFooSecondary <= *.c

SharedLibrary : libFooSecondary.so

Install : libFooSecondary.so => libs/armeabi-v7a/libFooSecondary.so

SharedLibrary : libFooMain.so

/home/user/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: cannot find -lFooSecondary

collect2: ld returned 1 exit status

make: *** [obj/local/armeabi-v7a/libFooMain.so] Error 1

如果正确编译和安装,为什么找不到libFooSecondary.so?

另外,如果LOCAL_MODULE名称改变,例如,第一个是LOCAL_MODULE:= zname,第二个是LOCAL_MODULE:= aname,先编译第二个,我不知道为什么.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值