静态编译一个android程序

时间:2012-12-27 22:10:33

标签: linker android-ndk arm

我正在尝试在挂载/系统之前将某些内容写入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中记录一些东西?
提前谢谢。

1 个答案:

答案 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