Android NDK动态库的调用
2010-09-16 23:50:00 来源:WEB开发网Compile thumb : tutorial <= /cygdrive/e/cygwin/android-ndk-r4/samples/testappso/jni/tutorial01.c
Compile thumb : tutorial <= /cygdrive/e/cygwin/android-ndk-r4/samples/testappso/jni/tutorial02.c
SharedLibrary : libtutorial.so
Install : libtutorial.so => /cygdrive/e/cygwin/android-ndk-r4/samples/testappso/libs/armeabi
D:在重新刷新工程,你就可以在lib下面看到生成的so了,点击加载运行
第二部分:调用通过自己编写make方式生成的so
我们还是引用上面的工程,不过把libtutorial.so 拿出来,通过自己写makefile来编译成so,这里请大家注意了,调用外部的so时候,不能够直接用在linux下生产的so来调用,必须通过ndk 提供的gcc来编译,否则会因为平台的不同无法调用。
A. 废话不多说,看makefile怎么写!我的ndk是1.6版本的.
新建一个文件夹,把 tutorial01.c tutorial02.c tutorial02.h 文件拷贝过去,然后编写makefile文件
libtutorial.so Makefile
CC = /cygdrive/e/cygwin/android-ndk-r4/build/prebuilt/windows/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0
CFLAGS = -g -O2 -fPIC -I/cygdrive/e/cygwin/android-ndk-r4/build/platforms/android-5/arch-arm/usr/include
SDFLAGS = -nostdlib -Wl,-T,armelf.xsc -Wl,-shared,-Bsymbolic -Wl,-soname,$@ -lc
CRT_OBJS= -L/cygdrive/e/cygwin/android-ndk-r4/build/platforms/android-5/arch-arm/usr/lib -lz -lm -ldl
# source files:
SRCS= tutorial01.c tutorial02.c tutorial02.h
all: libtutorial.so
libtutorial.so: tutorial01.o tutorial02.o
$(CC) $(SDFLAGS) -o $@ tutorial01.o tutorial02.o $(CRT_OBJS)
tutorial01.o: tutorial02.h
tutorial02.o: tutorial02.h
clean:
rm -f libtutorial.so *.o
在执行make的时候需要注意一下几点:
1. 指定程序需要的头文件目录 通过-I指定/cygdrive/e/cygwin/android-ndk-r4/build/platforms/android-5/arch-arm/usr/include
更多精彩
赞助商链接