私は今これで2日を無駄にしました。問題を解決するための指針は本当に役に立ちます。 私のAndroid.mkファイルは以下の通りです。 問題は、libst.soがシステムとして実行可能ファイルoptiにリンクする必要があるということです。 しかし、実行ファイルを16進数で開くと、libst.soファイルへの完全なパスが表示されます。他の従属ファイルも正しくリストされています。 その結果、ファイルがローカルパス で検索されているため、最終的にCAN NOT LINK EXECUTABLEエラーが発生します。ローカル共有オブジェクト(.soファイル)としてAndroidのexeリンキングシステム共有オブジェクト(.soファイル)
/media/ExtHDD/NIEL/OPTI/TEST/optimize/workspace/android/obj/local/armeabi-v7a/libst.so」が見つかり ではなく、内部の /system/lib/libst.soを探していません理想的に探さなければならないところ。
任意のポインタや提案が大きな助けになります。ありがとうございました。
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
SRC_PATH := ${LOCAL_PATH}/../../..
LOCAL_MODULE := libsmp
LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/libs_beta/armeabi-v7a/libsmp.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_ARM_NEON := true
LOCAL_MODULE := libocv
LOCAL_SRC_FILES := ${LOCAL_PATH}/lib/libs_beta/armeabi-v7a/libOCv.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libst
LOCAL_SRC_FILES := ${LOCAL_PATH}/lib/libs_beta/armeabi-v7a/libst.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := opti
LOCAL_SRC_FILES := \
$(SRC_PATH)/main.cpp \
LOCAL_C_INCLUDES += \
$(SRC_PATH) \
$(SRC_PATH)/util \
$(SRC_PATH)/src \
$(LOCAL_PATH)/lib/include_beta \
$(LOCAL_PATH)/lib/include_beta/opencv \
$(LOCAL_PATH)/lib/include_beta/opencv2
LOCAL_SHARED_LIBRARIES += libc libsmp libocv libst
LOCAL_CFLAGS += -std=c++11 -fopenmp -fpermissive -mfloat-abi=softfp -mfpu=neon -flax-vector-conversions
LOCAL_LDLIBS += -llog -L$(SYSROOT)/usr/lib
LOCAL_CFLAGS += -fPIE
LOCAL_LDFLAGS += -fPIE -pie
include $(BUILD_EXECUTABLE)
進エディタは私のexeファイルを示し libsmp.so.libOCv.so./media/ExtHDD/NIEL/OPTI/TEST/optimize/workspace/android/obj/local/armeabi-v7a/libst .so.liblog.so.libstdC++。so.libm.so.libc.so.libdl.so ご覧のとおり、libst.soには完全なパスがあります。一方、他のファイル同様に表示されます。 – Niel
これは、libsmp.soがリンクされた方法によって命じられます。 –
@AlexCohn私はあなたが何を示唆しているか分かりません。それ以外のファイルはすべて正しく表示されます。私はここでmakefileを削除しましたが、たとえlibsmp.soを削除してlibst.soをインクルードしても、同じ結果が得られます。 – Niel