zoukankan      html  css  js  c++  java
  • NDK学习三: 纯手工编译Hello World

     
    1.配置环境变量
    添加make工具path环境变量:

    E:Androidandroid-ndk-r10bprebuiltwindows-x86_64in


     
     
    2.编写Hello World
    新建hello.c
    #include <stdio.h>
    
    int main(int argc, char* argv[])
    {
      printf("Hello Android!
    ");
      return 0;
    }
    3.编写makefile文件如下
    #ndk根目录
    NDK_ROOT=E:Androidandroid-ndk-r10b
    
    #编译器根目录
    TOOLCHAINS_ROOT=$(NDK_ROOT)/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64
    
    #编译器目录
    TOOLCHAINS_PREFIX=$(TOOLCHAINS_ROOT)/bin/arm-linux-androideabi
    
    #头文件搜索路径
    TOOLCHAINS_INCLUDE=$(TOOLCHAINS_ROOT)/lib/gcc/arm-linux-androideabi/4.6/include-fixed
    
    #SDK根目录
    PLATFROM_ROOT=$(NDK_ROOT)/platforms/android-14/arch-arm
    
    #sdk头文件搜索路径
    PLATFROM_INCLUDE=$(PLATFROM_ROOT)/usr/include
    
    #sdk库文件搜索路径
    PLATFROM_LIB=$(PLATFROM_ROOT)/usr/lib
    
    #文件名称
    MODALE_NAME=hello
    
    #删除
    RM=del
    
    #编译选项
    FLAGS=-I$(TOOLCHAINS_INCLUDE) 
          -I$(PLATFROM_INCLUDE)   
          -L$(PLATFROM_LIB) 
          -nostdlib 
          -lgcc 
          -Bdynamic 
          -lc
    
    #所有obj文件
    OBJS=$(MODALE_NAME).o 
         $(PLATFROM_LIB)/crtbegin_dynamic.o 
         $(PLATFROM_LIB)/crtend_android.o 
    
    #编译器链接
    all:
        $(TOOLCHAINS_PREFIX)-gcc $(FLAGS) -c $(MODALE_NAME).c -o $(MODALE_NAME).o
        $(TOOLCHAINS_PREFIX)-gcc $(FLAGS) $(OBJS) -o $(MODALE_NAME)
    
    #删除所有.o文件
    clean:
        $(RM) *.o
    
    #安装程序到手机
    install:
        adb push $(MODALE_NAME) /data/local/tmp
        adb shell chmod 755 /data/local/tmp/$(MODALE_NAME)
        adb shell /data/local/tmp/$(MODALE_NAME)
    
    #运行程序
    run:
        adb shell /data/local/tmp/$(MODALE_NAME) 
     
     
    4. 使用make命令便可以编译程序

     
    生成一个可以执行文件hello   一个目标文件hello.o
     
    于是有编译NDK的命令:
    // 编译目标文件
    E:Androidandroid-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-gcc -IE:Androidandroid-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.6/include-fixed -IE:Androidandroid-ndk-r10b/platforms/android-14/arch-arm/usr/include -LE:Androidandroid-ndk-r10b/platforms/android-14/arch-arm/usr/lib -nostdlib -lgcc -Bdynamic -lc -c hello.c -o hello.o
    
    // 编译可以执行文件
    E:Androidandroid-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-gcc -IE:Androidandroid-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.6/include-fixed -IE:Androidandroid-ndk-r10b/platforms/android-14/arch-arm/usr/include -LE:Androidandroid-ndk-r10b/platforms/android-14/arch-arm/usr/lib -nostdlib -lgcc -Bdynamic -lc hello.o E:Androidandroid-ndk-r10b/platforms/android-14/arch-arm/usr/lib/crtbegin_dynamic.o E:Androidandroid-ndk-r10b/platforms/android-14/arch-arm/usr/lib/crtend_android.o  -o hello
     
    5.运行程序
    同样使用makefile即可

     
    使用make install即可安装运行我们的程序
    使用make run即可运行我们的程序
     
    install和run 在makefile可以理解成自定义函数

    我擦 为知笔记的代码着色到博客园不能用了



  • 相关阅读:
    zip 中文文件夹为空问题
    webview长按文本区域不显示文字放大镜等方法
    crash
    精疲力尽先生的造访
    告别忙碌的2017,迎来更加忙碌的2018
    传说中的59分!!
    为什么我一定吵不过女人?
    人挪活!
    低谷时,请读书!
    java小入门的感觉
  • 原文地址:https://www.cnblogs.com/bingghost/p/5721423.html
Copyright © 2011-2022 走看看