Android系統源碼external添加新模塊
在linux系統安裝配置好C語言等編譯工具後,可以輕鬆地寫個C語言小程序驗證某種功能,那如何在Android系統中編譯C語言或者靜態庫呢?不嚴格地說,Android系統也可以看作是linux系統,那應該也能和linux系統一樣,可以簡單地編譯C語言。事實上,是可以的。那如何Android系統源碼external添加新模塊、在android系統中運行呢?接下來以一個小例子說明。
一、寫一個HelloWorld
-- test
|-- Android.mk
`-- helloworld.c
1. 在Android源碼external路徑下創建一個文件夾,例如test,
cd external
mkdir test
2. 寫個HelloWord
#include<stdio.h> | " Press <F1> to display hel
|
int main(void) |- helloworld.c (/home/rick/am
{ ||- function
printf("Hello world...\n"); ||| main
return 0; |
| ~
}
3.編寫Android.mk
LOCAL_PATH:= $(call my-dir) | " Press <F1> to display hel
include $(CLEAR_VARS) |
LOCAL_MODULE_TAGS := optional |- Android.mk (/home/rick/amlo
LOCAL_MODULE := test ||- macro
LOCAL_SRC_FILES := $(call all-subdir-c-files) ||| LOCAL_PATH
include $(BUILD_EXECUTABLE)
二、編譯
1.配置編譯環境
在Android源碼根路徑執行source build/envsetup.sh,然後執行lunch,根據實際硬件選擇編譯選項,再到external/test下執行mm
source build/envsetup.sh
lunch
7
cd external/test
mm
編譯成功的前提是源碼整包編譯過,部分編譯mm的時間不會太長,編譯結果所在路徑會在打印中提示,即out/target/product/xxx/system/bin/test
三、驗證
adb push 方式或者串口方式將可執行文件下載到目標板子,執行./test
console:/ # cd vendor/
console:/vendor # ./test
Hello world...
四、修改Android.mk,編譯a文件或so文件
具體步驟參考下面第二個鏈接,生成路徑如下:
out/target/product/xxx/obj/STATIC_LIBRARIES/hello_intermediates/hello.a
out/target/product/xxx/obj/lib/hello.so
參考鏈接: