1

我正在尝试在挂载 /system 之前将某些内容写入 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 带有一些库,但 liblog 只是 liblog.so,而不是 liblog.a,那么如何在安装 /system 之前在 dmesg 中记录一些内容?
提前致谢。

4

1 回答 1

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

于 2012-12-28T13:10:51.907 回答