Android NDK 用Makefile 编译

  Android NDK版本r6b,目的:写一个传统的Makefile来编译一个Android平台的可执行文件和动态库.
  文件结构:hello.c和 Makefile
hello.c 内容如下
#include <jni.h>
#include <stdlib.h>
#include <stdio.h>
jint Java_com_miki_ImctestActivity_add( JNIEnv*  env,
                                      jobject  this,
                                      jint     x,
                                      jint     y )
{
    return (x+y);
}

int main()
{
    printf("hello world\r\n");
}

Makefile内容如下
NDKHOME=C:/Android/android-ndk-r6b
PLATFORM=8

GCC=${NDKHOME}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-gcc
CFLAGS := \
        -MMD -MP  -fpic -ffunction-sections -funwind-tables -fstack-protector  \
        -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__  -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \
        -DANDROID  -Wa,--noexecstack -O2 -DNDEBUG -g \
        -I${NDKHOME}/platforms/android-${PLATFORM}/arch-arm/usr/include

LD=${NDKHOME}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-g++
LDFLAGS=-Wl,-soname,libhello.so --sysroot=${NDKHOME}/platforms/android-${PLATFORM}/arch-arm -Wl,--no-undefined -Wl,-z,noexecstack  -lc

hello:hello.o
    ${LD} ${LDFLAGS} hello.o  ${NDKHOME}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a   -o $@

libhello.so:hello.o
    ${LD} -shared ${LDFLAGS} hello.o  ${NDKHOME}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a   -o $@
   
hello.o:hello.c
    ${GCC} ${CFLAGS} -c hello.c -o $@
   
clean:
    rm -f *.o
    rm -f *.so
    rm -f hello

 

来自:http://laohu2010.blog.hexun.com/69751706_d.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值