题记:编译环境可以参考https://www.cnblogs.com/ywjfx/p/9960817.html

不管是写C还是java,我想所有的程序员都经历过HelloWorld程序的编写,现在让我们开始安卓的framework层的HelloWorld之旅。

有了编译环境,只需要两个步骤就可以完成,步骤如下:

  1、在external下面创建test目录

      mkdir android/external/test

  2、在test目录下创建两个文件Android.mk、test.c

      #Android.mk文件
      LOCAL_PATH:= $(call my-dir) #定义当前模块的相对路径
      include $(CLEAR_VARS)      #清空当前环境变量
      LOCAL_MODULE:= test      #编译生成的目标名称
      LOCAL_SRC_FILES := test.c    #编译该模块所需要的源文件 注:编译多个源文件LOCAL_SRC_FILES := test.c \ test1.c
     # LOCAL_MODULE_PATH:=$(LOCAL_PATH) #在当前目录生成该模块文件
      include $(BUILD_EXECUTABLE)   #编译之后的文件类型
      //test.c文件
      #include <stdio.h>
        main() {
             printf("hello world\n");
        }

  3、编译环境

    . build/envsetup.sh
  lunch  
     22  #选择自己的平台,个人是22

  4、编译文件

    mmm external/test  #使用mmm或者mm去编译test目录下的所有文件

  

不出意外的话,你可以看到下面的语句,说明你编译成功了。

    Starting build with ninja
    ninja: Entering directory `.'
    [ % /] target C: test <= external/test/test.c
    external/test/test.c::: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
    main() {
    ^
     warning generated.
    [% /] Install: out/target/product/tulip-p1/system/bin/test
    make: Leaving directory `/home/yangwj/software/cqa64_android_v7./android'     #### make completed successfully (: (mm:ss)) ####

###共勉###

安卓之Android.mk编写的更多相关文章

  1. 4.android.mk编写规范

    Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...

  2. 安卓之Android.mk多文件以及动态库编译

    1.多文件编译 多文件编译共有两种方式: (1) 在Android.mk中一一添加 LOCAL_PATH:= $(call my-dir) #定义当前模块的相对路径 include $(CLEAR_V ...

  3. Android.mk具体解释

    概述     Android.mk文件用来向编译系统描写叙述怎样编译你的源码.更确切地说,该文件事实上就是一个小型的Makefile.由于该文件会被NDK的编译工具解析多次,因此应该尽量降低源码中声明 ...

  4. Android.mk遍历子目录所有文件

    转:http://blog.csdn.net/langresser_king/article/details/8272736 define all-cpp-files-under$(patsubst ...

  5. Android Jni Android.mk经常使用语句

    仅仅要涉及JNI开发都涉及到Android.mk编写,它也是一种makefile语言. 以上一篇博客中提供的project为例! <1> : 信息打印 : 既然是一种简易语言那么首先应该知 ...

  6. 03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写

     1  案例场景,通过C语言回调Java的代码,案例的最终界面: 2  案例的代码结构如下: 3 编写DataProvider的代码: package com.example.ndkcallbac ...

  7. cocos2d-x在Android上的编译过程(3):简化Android.mk文件的编写

    在编译动态库时.要求我们要去编写jni/Android.mk文件.告诉编译器编译出来的库时应包括包括编译文件和其它引用库.但对于一个大项目来说,维护这个文件肯定是一件比較繁琐的事情.由于每加一个文件或 ...

  8. [转]编写 android.mk 中 LOCAL_C_INCLUDES 的技巧

    看原文请移步:编写 android.mk 中 LOCAL_C_INCLUDES 的技巧 在编写android.mk的过程中,免不了要修改LOCAL_C_INCLUDES来设置头文件的include目录 ...

  9. [转]编写Android.mk中的LOCAL_SRC_FILES的终极技巧

    希望看原文的请移步:[原创]编写Android.mk中的LOCAL_SRC_FILES的终极技巧 问题的引入 在使用NDK编译C/C++项目的过程中,免不了要编写Android.mk文件,其中最重要的 ...

随机推荐

  1. (备忘)Java数据类型中String、Integer、int相互间的转换

    1.Integer转换成int的方法 Integer i; int k = i.intValue();即Integer.intValue(); 2.int转换成Integer int i; Integ ...

  2. itertools:处理可迭代对象的模块

    合并和分解迭代器 chain chain可以接收多个可迭代对象(或者迭代器)作为参数,最后返回一个迭代器. 它会生成所有输入迭代器的内容,就好像这些内容来自一个迭代器一样. 类似于collection ...

  3. python面向编程:类的组合、封装、property装饰器、多态

    一.组合 二.封装 三.propert装饰器 四.多态 一.组合 ''' 1. 什么是组合 一个对象的属性是来自于另外一个类的对象,称之为组合 2. 为何用组合 组合也是用来解决类与类代码冗余的问题 ...

  4. Dijkstra 优先队列优化

    #include <iostream> #include <queue> #include <vector> using namespace std; ; stru ...

  5. runnerw.exe: CreateProcess failed with error 216 (no message available)

    看描述,创建进程失败,应该是main这个入口文件的问题. 检查包名.发现问题,IDE自动将包名导成了当前的目录名(模块) 上图两者不一致导致 解决: 修改包名为main 注:一个model下只能有一个 ...

  6. JAVA WEB之Servlet使用

    3. JSP提交数据和Servlet程序设计 想要将JSP数据提交,主要的方法有form表单方式.url方式和Session方式.将JSP数据传递给后台,form表单显然比较简单方便. 正如上一节中展 ...

  7. tomcat启动失败_严重: A child container failed during start

    错误信息代码: 严重: A child container failed during start java.util.concurrent.ExecutionException: org.apach ...

  8. gulp的作用,安装,使用

    1.gulp是什么?    Gulp是基于node的一个自动化构建工具,开发者可以使用它构建自动化工作流程(前端集成开发环境).例如:网页自动刷新,CSS预处理,代码检测,图片压缩等功能,只需要简单的 ...

  9. sln、db、opendb、vcxproj、filters、user文件跟踪说明

    工程文件控制 vs工程中,往往包含:.sln ..db  ..opendb 文件 sln文件 为工程属性文件,是我们必须添加到版本控制中的, db文件,是项目编译时生成的数据库文件,非常的大,占用空间 ...

  10. 万能正则解析 json 数据 解析成键值对

    string txt = "{\"ip\": \"127.0.0.1\", \"port\": 80, \"status ...