源碼編譯模塊

在test123目錄下創建如下三個文件:test.c、max.c、Android.mk

/**************** test.c 主程序 ********************/
#include<stdio.h>
extern max(int,int);
int main()
{
int a=5,b=3,c;
c=max(a,b);
printf("%d與%d相比,%d大。\n",a,b,c);
return 0;
}

/**************** max.c 將要被編譯成動態連接庫 ********************/
int max(int x,int y)
{
return x>y?x:y;
}

/**************** Android.mk 是Android系統中的Makefile文件 ********************/
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
max.c
LOCAL_MODULE_TAGS := optional
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE:= libmax
include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
test.c
LOCAL_CFLAGS=-lmax
LOCAL_LDFLAGS:= \
-Lout/target/product/generic/obj/lib
LOCAL_MODULE_TAGS := optional
LOCAL_SHARED_LIBRARIES := \
libmax
LOCAL_MODULE:=  test
include $(BUILD_EXECUTABLE)


創建好這三個文件後,用cd命令回到Android源碼目錄下,執行make  test 。注意不是文件夾名  test123

再用命令 
adb push 
(Android源碼目錄)/ out/target/product/generic/system/bin/test /data
adb push out/target/product/generic/system/lib/libmax.so /system/lib
將test程序和編譯好的libmax.so送進模擬器下相應的位置,其中
libmax.so應該放到  /system/lib下,否則test找不到它,test程序就無所謂了,放在什麼地方都行。


/system/lib 權限Read-only  shell

adb shell
su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
chmod 777 /system
exit
spa

用adb shell進入 模擬器的控制檯 ,固然事先要先把emulator啓動起來,不然adb shell會失敗。 進入test所在目錄,./test運行 # ./test 5與3相比,5大。
相關文章
相關標籤/搜索