Android中使用Makefile编译程序和库的方法

时间:2023-02-03 09:11:22

    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的脚本,也可使用,内容如下