WEB开发网
开发学院手机开发Android 开发 Android NDK动态库的调用 阅读

Android NDK动态库的调用

 2010-09-16 23:50:00 来源:WEB开发网   
核心提示:NDK提供的一些基本c语言库的头文件2. 指定库路径-L/cygdrive/e/cygwin/android-ndk-r4/build/platforms/android-5/arch-arm/usr/lib 里面有libz.so,libm.so,libdl.so等库的路径3. 拷贝交叉编译文件armelf.xsc到a
NDK提供的一些基本c语言库的头文件

2. 指定库路径-L/cygdrive/e/cygwin/android-ndk-r4/build/platforms/android-5/arch-arm/usr/lib 里面有libz.so,libm.so,libdl.so等库的路径

3. 拷贝交叉编译文件armelf.xsc到android-ndk-r4/build/prebuilt/windows/arm-eabi-4.4.0 /lib/gcc/arm-eabi/4.4.0下,armelf.xsc在目录./build/prebuilt/linux-x86/arm- eabi-4.4.0/arm-eabi/lib/ldscripts下

4. 拷贝libc.so到./build/prebuilt/linux-x86/arm-eabi-4.4.0/lib/gcc/arm-eabi /4.4.0目录下,libc.so位于./build/platforms/android-5/arch-arm/usr/lib库

完成上面的工作你就可以放心make了,成功后生成libtutorial.so文件

libtest.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= test01.c

all: libtest.so

libtest.so: test01.o

$(CC) $(SDFLAGS) -o $@ test01.o $(CRT_OBJS)

test01.o: test01.c

clean:

rm -f libtest.so *.o

B. 生成so文件后,在工程目录下建立目录libs/armeabi,然后把so拷贝进去,在打开工程,刷新加载,一切搞定

C. 一些小技巧:

a. 查看so是不是编译成ARM模式下的so

$ file libtest.so

libtest.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

b. 如果别人提供了你一个so,查看提供了那些方法,更详细的用法,查看nm命令

$ nm libtutorial.so |grep T

00001344 a _GLOBAL_OFFSET_TABLE_

000002a8 T getinformation

000002b4 T getinformation2

D. 下面提供一个大工程的编译的makefile,吧opencore --omx下的testapp独立编译成so,编译通过,未加载库,给大家参考。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Android NDK 动态

编辑录入:coldstar [复制链接] [打 印]
赞助商链接