我无法objcopy --rename-sym
工作。
在一个新的 Android 项目中,我创建了目录 jni 和文件 stub.c:
#include <jni.h>
#include "dlog.h"
jint JNI_OnLoad(JavaVM* vm, void* reserved) {
DLOG("~~~~~~~~~~~~~~~~~~~~~~~ JNI_OnLoad ~~~~~~~~~~~~~~~~~~~~~~~~~");
return JNI_VERSION_1_6;
}
int myfunc() { return 0; }
命令~/an/ndk-build -j 4
说:
[armeabi-v7a] Install : libTest.so => libs/armeabi-v7a/libTest.so
[armeabi] Install : libTest.so => libs/armeabi/libTest.so
[x86] Install : libTest.so => libs/x86/libTest.so
[mips] Install : libTest.so => libs/mips/libTest.so
(有链接:
an -> ~/android-ndk-r9d/
ax -> android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/
ay -> ~/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/
)
然后我做
~/ax/arm-linux-androideabi-objcopy --redefine-sym myfunc=ourfunc libTest.so libTest-x.so
并获得一个相同的libTest-x.so。我当然试过~/ay/*objcopy
了,结果是一样的。我没有收到错误消息。而且myfunc()仍然存在,没有ourfunc()。
如何重命名 .so 文件中的函数?