编译Native C的hello,world模块

 

    Android 编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才有Makefile文件,而其他的每个component都使用统一标准的 Android.mk. Android.mk文件本身是比较简单的,不过它并不是我们熟悉的Makefile,而是经过了Android自身编译系统的很多处理,因此要真正理清 楚其中的联系还比较复杂,不过这种方式的好处在于,编写一个新的Android.mk来给Android增加一个新的Component会比较简单。编译 Java程序可以直接采用Eclipse的集成环境来完成,这里就不重复了。我们主要针对C/C++来说明,下面通过一个小例子来说明,如何在 Android 中增加一个C程序的Hello World:

1. 在$(YOUR_ANDROID)/development 目 录下创建hello 目录,其中$(YOUR_ANDROID) 指 Android源代码所在的目录。

$ mkdir $(YOUR_ANDROID)/development/hello

2. 在$(YOUR_ANDROID)/development/hello/ 目 录编写hello.c 文件,hello.c的内容当然就是经典的HelloWorld程序:

# include < stdio. h>

int main( )
{
    printf ( "Hello World!/n" ) ;
    return 0;
}

3.在$(YOUR_ANDROID)/development/hello/ 目录编写Android.mk 文件。这是Android Makefile的标准命名,不要更改。Android.mk文件的格式和内容可以参考其他已有的Android.mk文件的写法,针对 helloworld程序的Android.mk文件内容如下:

LOCAL_PATH: = $( call my- dir)
include $( CLEAR_VARS)
 
LOCAL_SRC_FILES: = /
    hello. c
 
LOCAL_MODULE : = helloworld
include $( BUILD_EXECUTABLE)

注意上 面LOCAL_SRC_FILES用来指定源文件,LOCAL_MODULE指定要编译的模块的名字,下一步骤编译时就要用到。include $(BUILD_EXECUTABLE)表示要编译成一个可执行文件,如果想编译成动态库则可用BUILD_SHARED_LIBRARY,这些可以在$(YOUR_ANDROID)/build/core/config.mk 查到。

4. 回到Android源代码顶层目录进行编译:

#  cd $(YOUR_ANDROID) && make helloworld

注意 make helloworld中的目标名helloworld就是上面Android.mk文件中由LOCAL_MODULE指定的模块名。
编译结 果如下:

target thumb C: helloworld < = development/ hello/ hello. c
target Executable: helloworld ( out/ target/ product/ generic/ obj/ EXECUTABLES/ helloworld_intermediates/ LINKED/ helloworld)
target Non- prelinked: helloworld ( out/ target/ product/ generic/ symbols/ system / bin/ helloworld)
target Strip: helloworld ( out/ target/ product/ generic/ obj/ EXECUTABLES/ helloworld_intermediates/ helloworld)
Install: out/ target/ product/ generic/ system / bin/ helloworld

5.如 上面的编译结果所示,编译后的可执行文件存放在out/target/product/generic/system/bin/helloworld , 通过”adb push”将它传送到模拟器上,再通过”adb shell”登录到模拟器终端,就可以执行了

原文地址:http://blog.csdn.net/swt914/archive/2010/05/07/5568004.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值