如何使用androidndk构建具有共享库的可执行bin

如何使用androidndk构建具有共享库的可执行bin,android,c++,linker,android-ndk,shared-libraries,Android,C++,Linker,Android Ndk,Shared Libraries,如何使用Android NDK R8构建具有给定共享库的可执行bin?? 我试图通过为给定的共享库创建一个预构建的共享库来创建一个垃圾桶, 但总是出现“错误:未定义对‘av_free_数据包(AVPacket*)的引用” “ 我的android.mk是: LOCAL_PATH := $(call my-dir) DEFINES += \ -DTARGET_POSIX \ -DTARGET_LINUX \ -D_LINUX \

如何使用Android NDK R8构建具有给定共享库的可执行bin?? 我试图通过为给定的共享库创建一个预构建的共享库来创建一个垃圾桶, 但总是出现“错误:未定义对‘av_free_数据包(AVPacket*)的引用” “

我的android.mk是:

LOCAL_PATH := $(call my-dir)
DEFINES += \
           -DTARGET_POSIX \
           -DTARGET_LINUX \
           -D_LINUX \
           -DTARGET_ANDROID \
           -D__STDC_CONSTANT_MACROS 

######################################
#build ffmpeg prebuilt lib
######################################
include $(CLEAR_VARS)  
LOCAL_MODULE := libavcodec
LOCAL_SRC_FILES := lib/lib/libavcodec.a 
LOCAL_EXPORT_C_INCLUDES +=$(LOCAL_PATH)/lib/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)  
LOCAL_MODULE := libavfilter  
LOCAL_SRC_FILES := lib/lib/libavfilter.a
LOCAL_EXPORT_C_INCLUDES +=$(LOCAL_PATH)/lib/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)  
LOCAL_MODULE := libavformat  
LOCAL_SRC_FILES := lib/lib/libavformat.a  
LOCAL_EXPORT_C_INCLUDES +=$(LOCAL_PATH)/lib/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)  
LOCAL_MODULE := libavutil  
LOCAL_SRC_FILES := lib/lib/libavutil.a  
LOCAL_EXPORT_C_INCLUDES +=$(LOCAL_PATH)/lib/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)  
LOCAL_MODULE := libpostproc  
LOCAL_SRC_FILES := lib/lib/libpostproc.a   
LOCAL_EXPORT_C_INCLUDES +=$(LOCAL_PATH)/lib/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)  
LOCAL_MODULE := libswresample  
LOCAL_SRC_FILES := lib/lib/libswresample.a   
LOCAL_EXPORT_C_INCLUDES +=$(LOCAL_PATH)/lib/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)  
LOCAL_MODULE := libswscale  
LOCAL_SRC_FILES := lib/lib/libswscale.a
LOCAL_EXPORT_C_INCLUDES +=$(LOCAL_PATH)/lib/include
include $(PREBUILT_STATIC_LIBRARY)


######################################
#build thread lib
######################################
include $(CLEAR_VARS)
LOCAL_MODULE:= player
base := $(LOCAL_PATH)

LOCAL_SRC_FILES += ......

LOCAL_CPPFLAGS += -Wall -fexceptions $(DEFINES)  
LOCAL_LDLIBS += -llog -lz
LOCAL_LDFLAGS += -L../jni/lib/lib  -lavcodec -lavformat  -lavutil -lavfilter -lpostproc  -lswscale -lswresample

LOCAL_STATIC_LIBRARIES := libavcodec \
                          libavformat \
                          libavutil \
                          libavfilter \
                          libpostproc \
                          libswscale \
                          libswresample 

include $(BUILD_SHARED_LIBRARY)

您是否打算使用共享库构建ffmpeg?在用户设备上启动此功能时会遇到问题。当你需要一个可执行文件时,我建议使用静态libs。但是我改为使用静态libs,错误仍然会发生。你可以发布你的Android.mk文件吗?好的,Android.mk如下。以及在