Android下动态链接库.so调用的简单例子
2011-10-09 16:37
176 查看
先在(Android源码目录)/development/目录下建立一个文件夹,比如起名叫 test123
在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_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_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程序就无所谓了,放在什么地方都行。
用adb shell进入模拟器的控制台,当然事先要先把emulator启动起来,否则adb shell会失败。
进入test所在目录,./test运行
# ./test
5与3相比,5大。
转载者注:其实应该在Android.mk中加入这么一句话,要不编译可能通不过:LOCAL_MODULE_TAGS:=optional
在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_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_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程序就无所谓了,放在什么地方都行。
用adb shell进入模拟器的控制台,当然事先要先把emulator启动起来,否则adb shell会失败。
进入test所在目录,./test运行
# ./test
5与3相比,5大。
转载者注:其实应该在Android.mk中加入这么一句话,要不编译可能通不过:LOCAL_MODULE_TAGS:=optional
相关文章推荐
- Android下动态链接库.so调用的简单例子
- Android下动态链接库.so调用的简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子
- Android调用天气预报的WebService简单例子