查看linux的.so包含哪些函数:nm .so; readelf -a .so 如果是ndk编译的.so,nm查看不出函数,得用readelf,因为android的.so或者可执行文件使用elf格式
gcc的fvisibility=hidden 可以把所有的符号(函数和变量名)强制标记为隐藏属性,符号就变成了局部符号(t) 在android中LOCAL_CFLAGS += fvisibility=hidden 但是此时nm或者readelf是能看到所有的符号名的。 如果要导出某些函数(T),则需要在code中显式的声明: void __attribute__ ((visibility ("default"))) flipAvatar( JNIEnv* env ) { }然后需要隐藏局部函数名,此时nm/readelf真的看不到隐藏的符号了:
LOCAL_PATH := $(call my-dir) cmd-strip = $(TOOLCHAIN_PREFIX)strip --strip-debug -x $1 arm-linux-androideabi-strip --strip-unneeded *.so(continue)
转载于:https://www.cnblogs.com/octave/p/4429327.html
