提问人:lucky1928 提问时间:10/21/2022 最后编辑:lucky1928 更新时间:10/21/2022 访问量:49
nm 未列出 android 原生代码中的静态方法
nm not list static method from android native code
问:
我有以下android本机代码:
#include <jni.h>
#include <string>
#include <android/log.h>
#define TAG "MyExam"
#define LOGD(msg) __android_log_print(ANDROID_LOG_DEBUG,TAG,msg);
int testOne() {
LOGD("one");
return 1;
}
static int testTwo() {
LOGD("TWO");
return 2;
}
extern "C" JNIEXPORT jstring JNICALL
Java_com_sample_jniexam_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
LOGD("JNI");
testOne();
testTwo();
return env->NewStringUTF(hello.c_str());
}
但是当尝试运行 nm 列出符号时,找不到静态方法 testTwo()!
nm -gD --demangle ./app/build/intermediates/merged_native_libs/debug/out/lib/armeabi-v7a/libjniexam.so |grep test
000081ed T testOne()
我应该使用哪个工具来列出静态方法符号?
更新
感谢@dimich的评论,在检查调试符号文件后,我发现了以下结果:
$ nm ./app/build/intermediates/cmake/debug/obj/armeabi-v7a/libjniexam.so |grep test
000081ed T _Z7testOnev
000082e1 t _ZL7testTwov
此输出中的“T”和“t”是什么意思?
答: 暂无答案
评论
static
__attribute__((noinline))