首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态编译android程序

静态编译android程序
EN

Stack Overflow用户
提问于 2012-12-28 06:10:33
回答 1查看 422关注 0票数 1

在挂载/system之前,我正在尝试向dmesg日志中写入一些内容。

我的问题是,为了写入dmesg (在android上),我需要使用android特定的东西,而不仅仅是我通常使用的crossdev arm系统。

只要:

代码语言:javascript
复制
__android_log_print(ANDROID_LOG_DEBUG, "libnav", "DEBUG - custom program started");

如果您按如下方式编译它,一切都很好(我在/var/tmp/android中创建了一个独立的工具链):

代码语言:javascript
复制
arm-linux-androideabi-gcc --sysroot /var/tmp/android/sysroot -llog -o custom_program custom_program.c

但上面的命令将构建一个动态链接的可执行文件,如果系统尚未启动,它将运行得很好。

“很简单,静态编译就行了!”我想。

android ndk附带了一些库,但是liblog只是liblog.so,而不是liblog.a,那么在/system beign挂载之前,我如何在dmesg中登录一些东西呢?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-12-28 21:10:52

使用arm-unknown-gnueabi gcc和

fopen在fopen返回的文件*上打开/dev/kmsg和fprintf。

在android运行时运行该程序将写入dmesg,但如果是在早期启动过程中,则不会。为什么?

@auselen我已经修改了init来启动这个静态程序:

init.rc代码段

代码语言:javascript
复制
on post-fs-data
write /dev/kmsg "launching test"
exec /data/test

我在dmesg里看到的就是...

代码语言:javascript
复制
<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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14061967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档