现在我有一个由 DNK 开发的 so 文件。我想在Linux中调用so文件使用C。但它总是提示:
[root@PCGiter Code]# gcc SoTest2.c -o SoTest2.exe -ldl
[root@PCGiter Code]# ./SoTest2.exe
Open Error:libcom_wuba_aes_ExecV3_1_0.so: cannot open shared object file: No such file or directory.
现在我有一个由 DNK 开发的 so 文件。我想在Linux中调用so文件使用C。但它总是提示:
[root@PCGiter Code]# gcc SoTest2.c -o SoTest2.exe -ldl
[root@PCGiter Code]# ./SoTest2.exe
Open Error:libcom_wuba_aes_ExecV3_1_0.so: cannot open shared object file: No such file or directory.
这个答案是用于为 Android 创建可执行文件并像在 Linux 中一样在 shell 中执行它们,而不是如何在 Linux 中执行 Android 可执行文件。
使用 Android-ndk 构建源文件,然后您可以直接复制到模拟器并在 adb shell 中执行。
用于为 android 创建可执行文件的 make 文件示例
# For building the Test executable
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Linker flags
LOCAL_LDLIBS += -llog
LOCAL_LDLIBS += -lOpenSLES
LOCAL_LDLIBS += -landroid
# Include paths
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)
# Local C Flags if any
LOCAL_CFLAGS :=
# Source Files to compile
LOCAL_SRC_FILES := \
# Shared libraries to be used while linking
LOCAL_SHARED_LIBRARIES :=
# Local module name
LOCAL_MODULE :=
include $(BUILD_EXECUTABLE)
您可以通过启动模拟器然后在命令提示符 "adb shell" 中执行命令来进入模拟器外壳。
通常我观察到的是,当仅复制到 /data/ 文件夹时,我能够执行。/mnt/sdcard 等其他文件夹我无法执行可执行文件。