【从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有三种方式:

  1. AWStudio安装目录下的Installer文件夹自带的SDK;(推荐)
  2. 板子供应商提供的SDK,可能与应用依赖版本不兼容,需找供应商更新SDK;
  3. 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" 命令识别正确的触摸或鼠标设备文件名。

Linux

 图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_CPPPATHOS_LIBPATH是否包含头文件与库文件搜索路径。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分