1
我現在已經浪費了兩天對此。任何解決問題的指針都會很有幫助。 我的Android.mk文件如下。 問題是,libst.so應鏈接爲一個系統,因此與我的可執行文件opti。 但是,當我打開十六進制可執行文件它列出了so文件libst.so的完整路徑。而其他依賴so文件正確列出。 最終導致CAN NOT LINK EXECUTABLE錯誤,因爲在本地路徑 (例如,Android EXE鏈接系統共享對象(.so文件)作爲本地共享對象(.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