我正在尝试在挂载/系统之前将某些内容写入dmesg日志
我的麻烦是,写入dmesg(在android上)我需要使用特定于android的东西,而不仅仅是我通常的crossdev arm系统。
只是:
__android_log_print(ANDROID_LOG_DEBUG, "libnav", "DEBUG - custom program started");
如果按照以下方式编译它会很好(我在/ var / tmp / android中创建一个独立的工具链):
arm-linux-androideabi-gcc --sysroot /var/tmp/android/sysroot -llog -o custom_program custom_program.c
但是上面的命令将构建一个动态链接的可执行文件,如果系统尚未启动,它将正常运行
“很简单,只需静态编译!”我想
android ndk附带了一些libs,但liblog只是liblog.so,而不是liblog.a,那么如何在/ system beign mount之前在dmesg中记录一些东西?
提前谢谢。
答案 0 :(得分:0)
使用arm-unknown-gnueabi-gcc和
在fopen返回的FILE *上打开/ dev / kmsg和fprintf
在android运行时运行程序将写入dmesg,但如果在早期启动过程中则不会。为什么呢?
@auselen
我还修改了init以启动这个静态程序:
init.rc片段
on post-fs-data
write /dev/kmsg "launching test"
exec /data/test
我在dmesg看到的就是这个...
<4>[ 6.336816] launching test
<6>[ 6.336902] init: command 'write' r=0
<6>[ 6.337115] init: command 'exec' r=-1
这里是可执行的源代码:http://pastebin.com/Hym1APWx