2012-12-27 74 views
1

我試圖在/系統被安裝之前在dmesg日誌中寫入內容。
我的麻煩是,寫入dmesg(在android)我需要使用android特定的東西,不只是我通常crossdev手臂系統。
剛:靜態編譯一個安卓程序

__android_log_print(ANDROID_LOG_DEBUG, "libnav", "DEBUG - custom program started"); 

都很好,如果你編譯如下(我做在/ var一個獨立的工具鏈的/ tmp /機器人):

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中記錄某些東西?
在此先感謝。

+0

您應該接受答案或提供意見。 – auselen

回答

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

+0

你應該爲單獨的問題創建單獨的問題。這不是一個回答你自己的問題順便說一句。 – auselen

+0

可能無法從數據分區運行它。 – auselen

+0

是的,我做過,我認爲這是正確的回答你,因爲你回答我;) http://stackoverflow.com/questions/14070212/executing-static-program-from-android-init-rc –