test为可执行程序,libtest为库。在Android中编译并运行它们方法如下,首先要下载NDK。
参考了http://blog.csdn.net/L____J/archive/2010/08/04/5787759.aspx的方法,在此感谢。
1. 将库编译为动态库时:
test中仅有一个文件main.c
Makefile内容如下
libtest中有头文件libtest.h和libtest.c
Makefile内容如下
启动模拟器后,在ubuntu的shell中输入
adb push test /data/
adb push libtest /data/
adb shell chmod 777 /data/test
在模拟器的shell中
cd /data/
export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH
./test
注意
EXTRA_OBJS = $(BASE_PATH)/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/libgcc.a
libgcc.a需放在其它库的前面,否则程序在运行时会有无法链接的提示,但在链接时没有报错。
2. 将库编译为静态库时
test的Makefile此时为将
改为
即可
libtest的Makefile此时为
3. test的Makefile也可通过automake工具生成
首先执行autoscan
将生成的configure.scan重命名为configure.ac
configure.ac内容修改如下
Makefile.am内容如下
依次执行
aclocal
autoheader
autoconf
automake --add-missing
编写脚本build.sh,内容如下
执行脚本build.sh后编译即可。
另有Funambol的脚本,也可使用,内容如下