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