AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植到其它平台。
在上一篇文章我们介绍了使用AWTK开发简单的应用并在PC上模拟运行,本篇文章就来介绍一下怎么让应用程序运行在嵌入式Linux平台上。
交叉编译通常在PC的Ubuntu上进行,准备对应板子的交叉编译工具链、AWTK SDK(awtk与awtk-linux-fb)、应用工程(应用需提前在AWTK Designer上打包资源)。SDK版本需要配套,否则会出现编译不通过或运行异常问题,具体根据AWTK应用程序所依赖的SDK版本选择,获取SDK有三种方式:
第一种和第三种方式需要自行配置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/
将交叉编译工具解压到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 配置设备名称
在Ubuntu打开awtk-linux-fb目录并输入scons命令编译awtk。
同样在awtk-linux-fb目录输入命令scons APP=../awtk-hello-demo,“APP=”后面为应用程序相对路径。
提示“scons: done building targets.”代表编译成功,若编译失败考虑SDK版本不配套或awtk_config.py中工具链路径设置不正确等情况。
在提示编译成功之后,还需要执行下面命令生成realease文件夹。
./release.sh ../awtk-hello-demo/res demo
将release文件夹通过scp或其它工具将其拷贝到板子上,并在板子上运行命令:./release/bin/demo若提示can't load library 'xxx.so',需添加动态库查找路径,在板子控制台输入export LD_LIBRARY_PATH=so所在文件夹的路径,再运行应用即可。
若使用Github最新版的SDK,可以使用另外一种配置与编译方式,这种方式可以避免了在一堆配置里面寻找配置项的麻烦。
在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。
去到应用程序目录下,使用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是否包含头文件与库文件搜索路径。
全部0条评论
快来发表一下你的评论吧 !