在这篇文章中(http://hi.baidu.com/mcu99/blog/item/216f1fce17e1c00b92457edd.html),我在Android下使用dlopen函数调用.so文件没有成功,于是只得改用在编译过程中指定.so文件的方式加以调用,这次在Android下倒是通过了。

先在(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大。

原文: http://hi.baidu.com/mcu99/blog/item/59ed168014b130df9023d942.html

更多相关文章

  1. [置顶] 我的Android进阶之旅------>Android中AsyncTask源码分析
  2. 修改Android签名文件keystore作为eclipse默认debug签名文件
  3. linux下用git下载android任意模块源码
  4. Android串口通信实例分析【附源码】
  5. Android运行模拟器
  6. 使用Android自带Gallery组件实现CoverFlow,源码+解析
  7. android sdk 版本问题 R文件问题
  8. 使用Android内置的Pull解析器解析XML文件
  9. Android 开源项目源码分析第一期正式发布

随机推荐

  1. Android画虚线
  2. Android RadioButton 图片位置和大小
  3. android 反射静态方法传值
  4. eclipse 新建 android 项目时,问题汇总
  5. 第一章:初入Android大门(通过Button设置T
  6. Android Bootloader - Main system - Rec
  7. Android SD卡,文件,文件夹工具
  8. Android ContentObserver ---拦截短信并
  9. Android下免Root权限截屏
  10. Qt5.2中的android环境搭建