【从0开始创建AWTK应用程序】编译应用到嵌入式Linux平台运行

awtk是基于c语言开发的跨平台gui框架。本系列文章介绍如何从0开始创建awtk应用程序,包括搭建开发调试环境、使用awtk创建hello工程并在模拟器上运行、将awtk应用程序移植到其它平台。
搭建linux平台交叉编译环境在上一篇文章我们介绍了使用awtk开发简单的应用并在pc上模拟运行,本篇文章就来介绍一下怎么让应用程序运行在嵌入式linux平台上。
1. 准备交叉编译环境交叉编译通常在pc的ubuntu上进行,准备对应板子的交叉编译工具链、awtk sdk(awtk与awtk-linux-fb)、应用工程(应用需提前在awtk designer上打包资源)。sdk版本需要配套,否则会出现编译不通过或运行异常问题,具体根据awtk应用程序所依赖的sdk版本选择,获取sdk有三种方式:
awstudio安装目录下的installer文件夹自带的sdk;(推荐)板子供应商提供的sdk,可能与应用依赖版本不兼容,需找供应商更新sdk;github上最新版的sdk,要求应用使用最新版awtk开发,但最新版sdk未经测试,可能存在bug。第一种和第三种方式需要自行配置awtk_config.py,配置方法见下面小节;第二种供应商一般会配置好,或者有专门的配置教程可以参考。
将工具链、sdk和应用拷贝到ubuntu以下路径,sdk与应用需放在同一级目录:
工具链:/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/
sdk与应用:
/home/user/
    |-- awtk/
    |-- awtk-linux-fb/
    |-- awtk-hello-demo/
2.配置交叉编译工具链路径将交叉编译工具解压到ubuntu环境内,接着打开awtk-linux-fb目录的awtk_config.py,找到tools_prefix参数配置工具链的路径。配置tslib则需修改tslib_lib_dir与tslib_inc_dir参数。# awtk_config.py
tslib_lib_dir='/opt/tslib/lib'
tslib_inc_dir='/opt/tslib/include'
tools_prefix='/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-'
配置设备可以到awtk-linux-fb/awtk-port/main_loop_linux.c修改,下图分别对应着framebuffer、触摸屏、键盘和鼠标等设备配置。
我们可以通过 hexdump  /dev/input/xx 命令识别正确的触摸或鼠标设备文件名。
图1 配置设备名称
编译打包并运行应用程序1. 编译awtk在ubuntu打开awtk-linux-fb目录并输入scons命令编译awtk。
2. 编译应用程序同样在awtk-linux-fb目录输入命令scons app=../awtk-hello-demo,“app=”后面为应用程序相对路径。
提示“scons: done building targets.”代表编译成功,若编译失败考虑sdk版本不配套或awtk_config.py中工具链路径设置不正确等情况。
3. 发布并运行应用程序在提示编译成功之后,还需要执行下面命令生成realease文件夹。
./release.sh ../awtk-hello-demo/res demo
将release文件夹通过scp或其它工具将其拷贝到板子上,并在板子上运行命令:./release/bin/demo若提示can't load library 'xxx.so',需添加动态库查找路径,在板子控制台输入export ld_library_path=so所在文件夹的路径,再运行应用即可。 
新版awtk sdk配置与编译方式若使用github最新版的sdk,可以使用另外一种配置与编译方式,这种方式可以避免了在一堆配置里面寻找配置项的麻烦。
1. 配置交叉编译工具链路径在awtk-linux-fb目录创建名为awtk_config_define.py的文件,将tools_prefix等参数及对应的路径写入该文件中。awtk_config_define.py还可以由脚本生成并支持修改其它参数,具体可以看最新版awtk-linux-fb的readme文档。
2. 编译awtk
在ubuntu打开awtk-linux-fb目录并输入scons命令编译awtk。 
3. 编译与发布应用去到应用程序目录下,使用scons linux_fb=true命令编译应用。接着输入python ./scripts/release.py生成release文件夹。
将release文件夹通过scp或其它工具将其拷贝到板子上,并在板子上运行命令:
./release/bin/demo
链接错误解决思路若在编译过程中遇到‘undefined symbol’错误提示,需检查awtk_config.py脚本os_libs是否添加链接库,os_cpppath与os_libpath是否包含头文件与库文件搜索路径。

英创信息技术嵌入式主板EM9170的PWM介绍
腾讯推出了可以诊断帕金森症的AI辅助诊断技术
stm32单片机按键控制的用法解析
AI芯片攻坚战已然打响 深度学习技术逐渐成为主流
Saber软件与电源变换器设计实现
【从0开始创建AWTK应用程序】编译应用到嵌入式Linux平台运行
人工智能广西学会第一次会员代表大会在南宁举行
面向全球发布紫光存储全线产品
三家餐厅成为机器人落地到餐厅的典型案例
统一流量管理平台的多种流量采集技术分析
魅族Pro7概念图发布,打破魅族以来的设计传统
LED照明驱动厂商:上海智浦欣微电子有限公司简介
基于一种磁致伸缩的线性位移测量系统LMPS 34介绍
一份科技行业高薪清单曝光了,年薪最高达到34.5万美元
稳压管工作特性是什么?
详解图神经网络的数学原理1
工业机器人如何定义,它的特点是什么
“车规级”的具体要求
电子芯闻早报:三星苹果和好,竞争对手失宠
怎么去预防可燃性气体