2017-08-29 30 views
1

私は今これで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) 
+0

進エディタは私の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

+0

これは、libsmp.soがリンクされた方法によって命じられます。 –

+0

@AlexCohn私はあなたが何を示唆しているか分かりません。それ以外のファイルはすべて正しく表示されます。私はここでmakefileを削除しましたが、たとえlibsmp.soを削除してlibst.soをインクルードしても、同じ結果が得られます。 – Niel

答えて

0

だから、ので、それらの間にいくつかの依存関係を持つファイルは、Android-NDKを使用して解決することができないようですビルド。この場合、私はアンドロイドソースツリーの下でプロジェクトを取得し、それを構築したexeが正しく生成されました。 私は上記のmkファイルもすべて以下のように変更しなければならなかった。次のように

LOCAL_MODULE := libst 
LOCAL_MODULE_SUFFIX := .so 
LOCAL_MODULE_CLASS := SHARED_LIBRARIES 
LOCAL_MODULE_TAGS := optional 
#32 bit 
LOCAL_SRC_FILES_$(TARGET_2ND_ARCH) := lib/$(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX) 
LOCAL_MULTILIB := both 
include $(BUILD_MULTI_PREBUILT) 
include $(CLEAR_VARS) 
関連する問題