make kernelmenuconfig V=1
2187 vim scripts/Makefile.build
2188 make kernelmenuconfig V=1
2189 grep -rn kernelmenuconfig ./
2190 make -f scripts/Makefile.build obj=scripts/basic
2191 vim Makefile
2192 make config
2193 make kernelmenuconfig V=1
*#446633#
# mount -t debugfs debugfs debugfs
mount -t debugfs none /sys/kernel/debug
git pull origin master:my_test
adb remount && adb push ./fp_server/obj/fp_server /data/thh/tee_02/tee
am start -n com.mediatek.mtklogger/com.mediatek.mtklogger.MainActivity
/data/misc/gionee/veba3
addr2line -C -f -e obj/local/armeabi/libsyjt.so 5ce8eb10
,arm-eabi-addr2line -C -f -e symbols/system/lib/*.so addr
du -h --max-depth=1 ./android_mtk_6755_mp/
scp counter@192.168.8.254:/home/veb-software/L26_6755_66_BBL7516A_M0.MP7.V1_160217_ALPS-0707-2000.tar.gz /home/safeic/Work/
LOCAL_LDFLAGS := -Wl,--hash-style=sysv
libsysv-hash-table-library_ldflags := -Wl,--hash-style=sysv
update-alternatives --config java
update-alternatives --config javac
那么我们进入到cd /etc/udev/rules.d/下,新建一个51-Android.rules文件(sudo vim 51-android.rules),
在这个文件中写上:
SUBSYSTEM=="usb", ATTRS{idVendor}==" 0bb4", ATTRS{idProduct}=="0c02",MODE="0666"
保存,再为51-android.rules加上权限(sudo chmod a+x 51-android.rules).
readelf -s
nm elf
这里可以看到几乎所有的函数名全局变量名都会被导出。其中有Java_com_example_SanAngeles_为前缀的
JNI接口函数,有importGLInit这些普通函数,有freeGLObject这些局部(static)函数,还有sStartTick等
全局变量名。其实在这个动态发布的时候,只需要导出java_com_开头的jni函数就可以了,里面这些细节函数名
完全不需要暴露出来。
如何做到这一点呢?首先,我们需要了解gcc新引进的选项-fvisibility=hidden,这个编译选项可以把所有的
符号名(包括函数名和全局变量名)都强制标记成隐藏属性。我们可以在Android.mk中可以通过修改
LOCAL_CFLAGS选项加入-fvisibility=hidden来做到这一点,
这里可以看到所有源代码里出现的函数名和全局变量名(符号名)都变成了't',也就是说都是局部符号
(类似于static),这样这些函数名主程序是看不到的。我们还需要把jni的入口函数变成'T'类型才行,
我们可以修改jni入口函数的属性来导出这些入口函数,比如app-android.c中的
Java_com_example_SanAngeles_DemoRenderer_nativeInit函数,可以改为:
jni 中static 声明后导致隐藏,无法看到。 show source
1void__attribute__ ((visibility ("default")))
2Java_com_example_SanAngeles_DemoRenderer_nativeInit ( JNIEnv* env )
最后我们还有一个问题就是如何隐藏那些局部符号名呢(t类型的符号)?我们可以调用strip -x来
去掉这些局部的符号名。我们可以通过修改Android.mk重定义cmd-strip这个命令来实现,修改后
的Android.mk如下:
show source
LOCAL_PATH := $(call my-dir)
cmd-strip = $(TOOLCHAIN_PREFIX)strip --strip-debug -x $1