3_1_2 AliOS Things 编译工具及编译配置系统|学习笔记

简介: 快速学习3_1_2 AliOS Things 编译工具及编译配置系统。

开发者学堂课程【HaaS 物联网应用开发课程3_1_2 AliOS Things 编译工具及编译配置系统】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/801/detail/13824


3_1_2 AliOS Things 编译工具及编译配置系统

 

内容介绍

一、工具简介

二、编译配置系统说明

 

一、 工具简介

1.gcc-编译选项

以 Linux 系统应用程序开发为例查看编译过程,书写以下程序:

root@8b09079bcc1a:/ workspace/gcc_ test# cat helloworld. C

#include <stdio. h>

#include <stdarg. h>

#include <string. h>

int main(void) {

printf(" welcome to helloworld\n' );

return 0;

}

代码内容较为简单,只有打印 Welcome to Hello World。在 Linux 上编译 Hello World.C,使用指令如下:

gcc -0 helloworld helloworld.c

意思就是用 GCC 来编译 Hello World 点 C,并且输出应用程序的名字:Hello World。在编译完成之后,结果如下:

Hello World

执行 Hello World 应用程序就可以看到打印出 Welcome to Hello World 语句。执行 GCC 语句中执行过程如下:

image.png

在执行上述语句时,GCC 会进行4个步骤,第一步是预编译,第二步是编译,第三步是汇编,第四步是链接,链接完成之后,才会生成 Hello Worl 应用程序。可以使用以下代码进行对应步骤,结果查看:

GCC-C Hello World.C

GCC-S Hello World.C

GCC-E Hello World.C>Hello World.I

Hello World 编写成功之后,Hello World 应用程序基本信息如下:

image.png

查看应用程序基本信息可以使用如下代码:

readelf -h helloworld

应用程序基本信息包括 data 及可以在什么机器下运行和头部的大小。以下是最常用的 GCC 编译选项:

-E

预处理,开发过程中想快速确定某个宏可以使用“-E -dM”

通过以上代码可以快速查看使用了哪些宏定义。

-C

把预处理、编译、汇编都做了,但是不链接

-S

把.c 文件汇编为.s 文件

-D

定义宏

-D 是指在定义的过程中手动使用宏定义传到编译系统中。

-O

指定输出文件

-I

指定头文件目录

-L

指定链接时库文件目录

-l

指定链接哪一个库文件

可以使用 GCC-Help 查看 GCC 更多编译选项。

2.AliOS Things 交叉编译工具简介

基于 AliOS 进行物联网应用的开发和 PC 开发,不同点在于物联网开发的应用程序运行在嵌入式硬件上,而不是PC上编译出来的,程序不通用,可以使用的编译工具也不同。

要想编出嵌入式应用上使用的应用程序,需要使用交叉编译工具链进行编译。AliOS 在编译过程当中,会自动下载交叉工具编译链,并把交叉工具链存放在 Build compiler 目录下。

使用 AOS make 的时候会尝试查看使用的工具是否存在,如果不存在,会从 gitee 上下载,下载完成之后再开始编译。已经使用过 AOS make,就不会有以上过程。虽然编译嵌入式硬件上运行的应用程序和编译 PC 上的应用程序使用的 tool Change 不同,但是编译过程相同。在 AliOS things 交叉编译工具上编译出来的应用程序,基本信息如下:

image.png

基本信息包括小端格式、机器和头部结构,但是在 machine 方面不同,此时的基本信息是 arm,是指可以在arm体系结构 CPU 上运行,Header 是52位 bytes。

 

二、编译配置系统说明

阿里 OS things 3.1采用的是 menu config 的图形配置系统,配置系统工制作的基础是名为 config.in 的组件配置文件。组件配置文件分为两部分,第一部分是顶层配置文件,顶层配置文件是应用程序配置文件的总入口,包含组件配置文件及系统配置变量。在用户配置工程时会自动生成。并且放置在工程应用的根目录下。 Application Example目录下的所有应用程序目录中都有 config in,也就是顶层配置文件。顶层配置文件包含了当前工程所依赖组件的配置文件及系统配置变量。当用户修改了应用代码,再引入新的组件或删除之前所应用的组件之后。在编译过程中,编译系统会自动更新底层配置文件,增加或删除相关的配置文件。以下是 application/Example/Link IT demo 的案例:

image.png

AOS APP LinkIT demo 是 APP 配置选项,没有系统配置选项,没有必需组件配置文件,如果定义了 AOS app LinkIT demo,以下所有的配置才会生效。在 Link cat 中有 OTA 功能,如果选中 Enabled AOS OTA 之后,会自动选择AOS component OTA 对应的组件,最后是应用的版本号信息。

除了顶层配置文件之外,还有组件配置文件。组件配置文件是用于对组件配置的文件。 Component 下所有的独立组件,根目录中的 config .in 都是组件配置文件,Comp 目录下的基本组件也是组件配置文件。一般情况下每个配置文件中都包含两项,第一项是唯一的组件配置选项,即组件 ID。第二项是组件能力对应的配置选项。组件配置文件和顶层配置文件的差异在于以下2点:

(1)组件配置文件默认为需要设置为使能状态,且不允许改为禁止;

(2)不使用 select 使能其它组件,需要在组件 Makefile (aos.mk)中选择所依赖的组件

3.组件依赖关系

AliOS things 是一切皆组件的思想,大概率 A 组件会依赖于 B 组件提供的功能。由此需要设置 A 组件依赖于 B 组件。依赖关系配置如下:

(1)在组件配置文件(Config.in)配置

在 Config.in 中使用 select 去选择其它组件,在3.1版本中,只有顶层配置文件可以选用这种方式,组件配置文件不可以选用该方式。

(2)在 Makefile (aos.mk)配置

在 aos.mk 中使用$(NAME)_COMPONENTS += 来选择其它组件,顶层配置文件和组件配置文件中均可使用此方法。

Netmgr 实现如图:

image.png

Config AOS comp net mgr,是组件 ID。默认需要为 Yes,不能设置为 No。不能在 config.in 中选用组件的依赖,要使用 Name components 选择组件依赖关系。组件能力配置项可设置为 Yes 或 No。右下方是是否支持网络优化功能的设置。

image.png

Menu config 是网络类型选择,如果使用蜂窝网,则需要选择 AOS net with CELLULAR;如果是 WiFi 网络,需要选择 AOS net with WiFi;如果使用以太网,需要选择 AOS net with ETH。

相关文章
|
监控 物联网 测试技术
|
监控 IDE 物联网
结合AliOS Things谈嵌入式系统通用问题定位方法(2):内核相关基础
内核提供的任务创建接口,会存在参数指定当前任务创建完立即运行还是需要显示调用start运行,需要注意。如果在创建任务时指定了立即执行,而在创建任务后去设置任务参数,可能是不生效的。(尤其posix的pthread接口经常遇到这种问题)
结合AliOS Things谈嵌入式系统通用问题定位方法(2):内核相关基础
|
NoSQL 安全 IDE
结合AliOS Things谈嵌入式系统通用问题定位方法(1):CPU相关基础
本文着重从问题定位的角度来介绍如何定位嵌入式软件系统中的问题,并结合AliOS Things提供的部分维测手段来介绍。
结合AliOS Things谈嵌入式系统通用问题定位方法(1):CPU相关基础
|
物联网 调度
AliOS Things SMP系统及其在esp32上实现示例
AliOS Things实现了基本的SMP调度框架,支持多CPU体系的系统运行和调度机制。任务可以动态在多核间进行切换或者绑定运行;高优先级任务可以最大化利用空闲资源核运行。基于此框架,可以快速实现AliOS Things在各种不同多核CPU架构下的移植。
5328 0
|
物联网 测试技术 持续交付
AliOS Things 持续集成(CI)系统介绍
AliOS Things在快速的迭代进化之中,如何保证提交的代码质量,并保证在各个硬件平台上的稳定性,是一个非常大的挑战。同时物联网硬件碎片化,资源紧张,对持续集成(CI)系统也提出了特殊的要求。本文介绍AliOS Things的CI系统的实现方式及思考。
5601 0
|
安全 物联网 Java
AliOS Things 组件系统(uCube)
AliOS Things 是阿里巴巴提供的物联网操作系统,可以在不同的设备上运行不同的功能,甚至相同的设备运行不同的功能,AliOS Things 基于组件管理: 1、 组件功能单一,复用组件提供的功能,比如通道、升级等功能。
4378 0
|
传感器 消息中间件 物联网
HCIA物联网初级考试-第五章物联网操作系统及感知层开发介绍
HCIA物联网初级考试-第五章物联网操作系统及感知层开发介绍
HCIA物联网初级考试-第五章物联网操作系统及感知层开发介绍
|
AliOS-Things 物联网 编译器
使用HaaS Studio开发AliOS Things C/C++应用
本文章将介绍使用HaaS Studio 进行AliOS-Things C/C++应用开发。
使用HaaS Studio开发AliOS Things C/C++应用
|
算法 AliOS-Things 物联网
HaaS100开发调试系列 之 定位AliOS Things内存及Crash问题
本文主要说开发调试过程中经常遇到的内存问题。
HaaS100开发调试系列 之 定位AliOS Things内存及Crash问题
|
NoSQL 物联网
使用线上的开发板做开发调试 |《AliOS Things快速开发指南》
当您手上没有现成可用的开发板时,也可以使用线上的开发板来调试验证您的程序。本文主要介绍线上开发板的使用流程。
使用线上的开发板做开发调试 |《AliOS Things快速开发指南》
下一篇
无影云桌面