Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android NDK建筑 – 包括LOCAL_SHARED_LIBRARIES?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Android NDK下构建项目时遇到问题.很可能是由于没包括正确的共享/静态库.我@L_772_2@的是-lsomeLib,但是没有包含LOCAL_SHARED_LIBRARIES的那些似乎…

我的Android.mk包含以下内容

LOCAL_SHARED_LIBRARIES = libutils libmedia libz libbinder

> ndk-build在哪里实际寻找这些图书馆?
>如果我不包括-lutils -lmedia -lz -lbinder,我甚至无法连接到链接错误.我有一种感觉,包括只有-LsomeDir和-lsomeLib不是正确的方法来@L_772_2@它们.

这是完整的Android.mk.

LOCAL_PATH := /Users/kevin/Desktop/player2/videoplayer/videoplayer/jni
LIBPLAYER_PATH := $(LOCAL_PATH)/../../LibPlayer

include $(CLEAR_VARS)

$(warning Android make file: $(LOCAL_PATH)/Android.mk)
$(warning Android sysroot: $(SYSROOT))
$(warning Additional LD_LIBS: $(LOCAL_PATH)/lib)

ifeq ($(BUILD_ID),MID)
        LOCAL_CFLAGS += -DENABLE_FREE_SCALE
endif

LOCAL_MODULE    := libamplayerjni
LOCAL_SRC_FILES := com_farcore_playerservice_AmPlayer.c sys_conf.c
LOCAL_ARM_MODE := arm
LOCAL_C_INCLUDES := $(LIBPLAYER_PATH)/amplayer/player/include \
    $(LIBPLAYER_PATH)/amplayer/control/include \
    $(LIBPLAYER_PATH)/amcodec/include \
    $(LIBPLAYER_PATH)/amffmpeg \
    $(JNI_H_INCLUDE) \
    /Android/ndk/build/tools/android-9-toolchain/sysroot/usr/include \
    /Android/ndk/build/platforms/android-9/arch-arm/usr/include \
    /Android/source_2.3/system/core/include \
    /Android/source_2.3/frameworks/base/include

LOCAL_LDLIBS := -L/Users/kevin/Desktop/player2/videoplayer/videoplayer/jni/lib -L$(SYSROOT)/usr/lib -llog -lz -lm -ldl **-lmedia -lstagefright -lutils -lbinder -lgcc -landroid -lc -lstdc++ -lthread_db**

**LOCAL_STATIC_LIBRARIES := libamplayer libamcodec libavformat libavcodec libavutil libamadec**
LOCAL_SHARED_LIBRARIES += libutils libmedia libz libbinder 

LOCAL_PRELINK_MODULE := false

include $(BUILD_SHARED_LIBRARY)

许多错误之一与这些库有关(即libmedia.so).

/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_uninit':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:220: undefined reference to `android::AudioTrack::stop()'
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:228: undefined reference to `android::AudioTrack::~AudioTrack()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `~Autolock':

解决方法

它看起来像我不应该在你的LOCAL_LDLIBS参数中包含-lmedia等.

ndk-build在哪里实际寻找这些图书馆?

如果您查看$NDK / docs / STABLE-APIs.html,您将看到可以以这种方式包含一组指定的库.注意:

看了我自己,没有一个你指定的库存在那里,然我只是在寻找API-14.

2.如果我不包括-lutils -lmedia -lz -lbinder,包括只有-LsomeDir和-lsomeLib不是正确的方法来@L_772_2@它们.

如果您的库只是常规的c / c库,那么您将#include应该使用LOCAL_C_INCLUDEs.

另请注意,从$NDK / docs / ANDROID-MK.html:

为了在我的本机代码中使用其他库,我只需#include它,然后指定在哪里找到头.这是我的LOCAL_C_INCLUDES:

LOCAL_C_INCLUDES := $(LOCAL_PATH)/shared/Core/inc \
                    $(LOCAL_PATH)/shared/Model/inc  \
                    $(LOCAL_PATH)/shared/boost/include

我希望这有帮助.

大佬总结

以上是大佬教程为你收集整理的Android NDK建筑 – 包括LOCAL_SHARED_LIBRARIES?全部内容,希望文章能够帮你解决Android NDK建筑 – 包括LOCAL_SHARED_LIBRARIES?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。