在Windows下利用mingw进行一些简单程序的编译还行,但是路径问题以及工具链的制作问题,总是会遇到麻烦,不如安装个虚拟机好用。曾试着在windows下编译下qt,后来坑太多果断放弃。自Win10推出ubuntu bash后,算是为在widows系统下开发运行linux程序带来了可能,我这里就试着在WIN10 bash下搭建了一个嵌入式qt的开发平台。WIN10 bash与在虚拟机上安装个ubuntu一样,都是同一套系统API,彼此兼容(有一些特殊设备bash未提供),不同之处在于,bash运行更高效,可以秒开,而且占用系统资源和空间更少,缺点是没有图形化界面。
WIN10 bash功能的打开参见https://jingyan.baidu.com/article/e73e26c0be8b6624adb6a7ba.html。
下面讲一讲怎么在win10 bash上搭建开发环境的一个示例。

一、编译Qt与tslib

首先下载Qt与tslib。Qt从官网上下载即可,这里选用4.8.7版本。tslib可以通过git下载,打开Win10 bash,通过 apt-get install git安装git软件后,通过 git clone https://github.com/kergoth/tslib下载tslib软件包。
安装几个软件包。

sudo apt-get install automake
sudo apt-get install autogen
sudo apt-get install autoconf
sudo apt-get install libtool
sudo apt-get install pkg-config

安装交叉编译工具。

sudo apt-get install g++-arm-linux-gnueabihf

开始编译tslib。

cd tslib
./autogen.sh
./configure  --prefix=/usr/local/tslib --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache
make
make install

其中,–prefix指定了tslib编译后安装的目录,–host指定了编译后运行所在的系统类型。
接着编译Qt。cd 到 qt-everywhere-opensource-src-4.8.7/mkspecs/qws 目录下,这里只有 linux-arm-gnueabi-g++ 的目录(我们的编译器选用的为gnueabihf),通过 cp linux-arm-gnueabi-g++ linux-arm-gnueabihf-g++ -r拷贝个新的目录出来,然后修改 linux-arm-gnueabihf-g++/qmake.conf 文件的内容如下。

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)QT_QPA_DEFAULT_PLATFORM = linuxfb
#QMAKE_INCDIR += /usr/local/tslib/include
#QMAKE_LIBDIR += /usr/local/tslib/lib# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc -lts
QMAKE_CXX               = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK              = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++ -lts# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_STRIP             = arm-linux-gnueabihf-stripload(qt_config)

回到 qt-everywhere-opensource-src-4.8.7 目录下,创建一个脚本,这里命名为 autoconfig.sh,其内容如下。

#!/bin/sh
./configure \
-opensource \
-confirm-license \
-release -shared \
-xplatform qws/linux-arm-gnueabihf-g++ \
-little-endian \
-host-little-endian \
-embedded arm \
-force-pkg-config \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-nis \
-no-opengl \
-no-cups \
-no-glib \
-prefix /usr/local/qt4.8.7 \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-no-qt3support \
-no-iconv -nomake tools -nomake tests \
-qt-mouse-tslib \
-I /usr/local/tslib/include \
-L /usr/local/tslib/libexit

运行这个脚本,然后 make && make install 完成Qt的编译与安装。

二、配置开发板

我们编译好了Qt与tslib的库,总要找个板子测试一下。这里我选用一块 cortex-a9 的开发板,uboot与linux内核文件选用开发板光盘中的,文件系统选用 linaro 网站上一个ubuntu12.04版本的系统,链接https://releases.linaro.org/archive/12.04/ubuntu/precise-images/ubuntu-desktop/linaro-precise-ubuntu-desktop-20120426-119.tar.gz 。选用ubuntu的好处在与安装一些软件包比较方便,直接 apt-get 就行了。通过 mfgtool 工具将 uboot,内核,文件系统烧写到开发板上后,启动系统。在终端,通过 echo false > /etc/X11/default-display-manager命令来取消桌面,使开发板屏幕系统启动后默认进入终端界面。因为感觉嵌入式设备要桌面没啥用,也浪费资源。
通过 apt-get install openssh-server安装 ssh-server 服务,我们可以开始接下来的操作了。

2.1 安装tslib

进入 /usr/local/tslib 目录,ls 查看如下。

root@NOTE:/usr/local/tslib# ls
bin  etc  include  lib

将 bin 目录下的文件拷贝到开发板的 /usr/bin 目录下,将 etc 目录下的文件拷贝到开发板的 /etc 目录下,将 lib 目录下的文件拷贝到开发板的 /usr/lib 目录下。这里拷贝文件建议用 scp 命令,拷贝软链接建议用 rsync -l。

2.2 安装qt库

进入 /usr/local/qt4.8.7 目录,ls 查看如下。

root@NOTE:/usr/local/qt4.8.7# ls
bin  demos  examples  imports  include  lib  mkspecs  plugins  tests  translations

将 lib 目录下的所有文件拷贝到开发板的 /usr/lib 目录下,将 plugins 目录拷贝到开发板的 /usr 目录下。

2.3 配置环境变量

将下面的内容添加到开发板 /etc/profile 文件中。

export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
export QT_QWS_FONTDIR=/usr/lib/fonts
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
export QWS_DISPLAY=linuxfb
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=/usr/lib/fonts

重启开发板上的系统,即完成了qt库与tslib库的安装,运行 ts_calibrate 命令可以进行触摸屏的校准。

三、安装Qt Creator

qtcreator安装在W10 bash里,由于其只是一个终端,没有 X server,这里在win10系统里安装一个Xming软件,在win10系统里显示 bash 的 X GUI。先下载 qtcreator 的软件包,链接http://download.qt.io/official_releases/qtcreator/3.1/3.1.2/qt-creator-opensource-linux-x86_64-3.1.2.run 。安装时现在win10系统中打开Xming软件,然后在bash中执行 DISPLAY=:0 ././qt-creator-opensource-linux-x86_64-3.1.2.run命令,安装界面会显示在windows系统上,如图所示。

按照默认设置一路点击next安装即可。

四、编译gdb

qtcreator使用调试功能,gdb是必不可少的。这里gdb是用来调试开发板上的应用,所以跟qt库一样,需要我们自己编译。从 http://ftp.gnu.org/gnu/gdb/ 上下载gdb-7.7.1.tar.gz(参照bash上的gdb版本)源码包。解压后进入gdb-7.7.1目录,先通过apt-get install python2.7-dev安装python2.7-dev开发包,然后执行./configure --host=x86_64-linux-gnu --target=arm-linux-gnueabihf --with-python=python2.7进行初始化。
这里说下builde,host,target这三个类型。

--build=BUILD     configure for building on BUILD [guessed]
--host=HOST       cross-compile to build programs to run on HOST [BUILD]
--target=TARGET   configure for building compilers for TARGET [HOST]

build参数是指编译源码包的系统环境,一般不用配置,软件包会自动检测。host参数是指编译出来的工具运行在什么系统上,比如这里我们编译的gdb被qtcreator调用,是运行在ubuntu bash上,所以指定它为x86_64-linux-gnu,也是bash上gcc的前缀。target参数是指编译出来的工具所要操作的系统,这里gdb是用来远程调试arm开发板程序的,所以指定它为arm-linux-gnueabihf,与arm开发板上gcc编译器的前缀相同。
初始化后,make && make install 会将编译出的文件安装到/usr/local/bin 目录下。
接着还需要编译gdbserver,它运行在开发板上。
进入/gdb-7.7.1/gdb/gdbserver 目录,执行./configure --prefix=/opt/arm-gdb-server/ --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf进行初始化,然后通过make && make install 命令安装。

4.1 安装gdbserver

进入/opt/arm-gdb-server 目录,tree 查看如下。

root@NOTE:/opt/arm-gdb-server# tree
.
├── bin
│   └── arm-linux-gnueabihf-gdbserver
└── share└── man└── man1└── arm-linux-gnueabihf-gdbserver.14 directories, 2 files

将bin 目录下arm-linux-gnueabihf-gdbserver 文件拷贝到开发板/usr/bin 目录下即可。

五、配置Qt Creator

进入/opt/qtcreator-3.1.2/bin 目录,执行DISPLAY=:0 ./qtcreator命令启动qtcreator。然后点击Tools->Options->Build & Run,配置Qt Versions 如下图。

配置Compilers如下图。

配置Debuggers如下图。

这三个配置选择的文件均是通过上面的步骤安装的。点击确认后,通过Tools->Options->Devices选项来添加一个设备,也就是我们的开发板,配置图如下。

其中Name随便取名,Host name 为开发板的IP地址,Username 与Passwd 分别是开发板系统上的root用户与密码,GDB server executable 填写为arm-linux-gnueabihf-gdbserver,也就是前面安装的gdbserver文件名。其它不用填写,默认即可。点击确认后,再次点击Tools->Options->Build & Run,最后来配置Kits,配置图如下。

六、测试Qt应用

用qtcreator新建一个工程,这里取名默认untitled,Kits选择上面设置的QCC。在mainWindow.ui 上拖拽一个QPushButton 和QLabel 控件到窗体上,修改pushButton 的clicked 槽函数如下。

void MainWindow::on_pushButton_clicked()
{static int i=0;ui->label->setText(QString("hello world!--%1").arg(i++));
}

修改untitled.pro 文件,添加如下两行。

INSTALLS += target
target.path = /apps/

第一句指定将在开发板上执行的文件(target在untitled.pro文件中通过“TARGET = untitled”被定义),第二句指定了将可执行文件拷贝到开发板的目录。编译无误后,点击qtcreator窗体左侧的Projects,然后配置Run 选项,在Arguments 框中添加“-qws”,配置如下图。

最后开始调试了,在按键的槽函数中添加一个断点,启动开发板上的系统,网络接好,然后点击qtcreator 上的Start Debuging 按钮,开始调试。调试界面如图。

开发板上运行界面如下图。

Win10 Bash搭建嵌入式Qt开发平台相关推荐

  1. 嵌入式Qt开发环境搭建

    嵌入式Qt开发环境搭建 系统基础环境 系统更新 sudo apt update sudo apt upgrade sudo apt autoremove 安装常用软件 # 安装vim sudo apt ...

  2. Ubuntu20.04下 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)

    Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 目录导航 Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 前言 1.安装前的准备工作 2.安装交叉编译器 3.安装t ...

  3. 64位Ubuntu 12.04下搭建嵌入式Qt(4.8.6)、QtCreator、qvfb过程全记录

    最新公司搞一个新项目,需要在Linux下进行UI界面设计.选来选去,最后选择采用Qt平台来做,于是要开始研究一下Qt. Qt作为业内最著名的UI开发工具之一,是一套完整的跨平台C++图形用户界面应用程 ...

  4. 嵌入式Qt 开发一个视频播放器

    上篇文章:嵌入式 Qt开发一个音乐播放器,使用Qt制作了一个音乐播放器,并在OK3568开发板上进行了运行测试,实际测试效果还不错. 本篇继续来实现一个Qt视频播放器软件,可以实现视频列表的显示与选择 ...

  5. 【嵌入式linux】linux上搭建嵌入式QT环境

    嵌入式QT是嵌入式产品中常用的GUI,其实更像是一个C++图形库,但是可以跨平台使用,我们可以在windows开发QT程序,然后将QT程序移植到开发板上,大大方便了应用层工程师的开发.QT lib是连 ...

  6. Ubuntu下嵌入式Qt开发环境配置全攻略

    本文以友善之臂的Mini6410嵌入式开发板为目标板,介绍ubuntu 12.04系统下,配置嵌入式Qt开发工具的过程.本文中介绍的工具.大部分步骤和脚本来自开发板附带资料光盘,但其默认配置环境为老旧 ...

  7. 17.2 搭建嵌入式QT运行环境

    17.2 搭建嵌入式QT运行环境 17.2.1采用的嵌入式开发板介绍 嵌入式开发板: 采用友善之臂Tiny4412 Tiny4412开发板的内核.uboot.交叉编译器 均采用友善之臂光盘自带的包. ...

  8. Linux学习之云服务器搭建嵌入式Linux开发环境

    Linux学习之云服务器搭建嵌入式Linux开发环境 第一步:购买云服务器 进入腾讯云官方网站腾讯云官方网站 选择云+校园云+校园 进入控制台 将云服务器系统设置为Ubuntu系统 使用Xshell6 ...

  9. 构建嵌入式系统软件开发环境-VMware的安装及搭建嵌入式Linux开发环境

    嵌入式系统操作系统 目前流行的嵌入式操作系统主要有VxWorks.WindowsCE.Linux等,由于Linux的源码开放性.内核可裁剪性.在图像处理.文件管理及多任务支持等诸多方面的特点,使得它成 ...

最新文章

  1. Nature指明大脑引流“废液”的确切路径
  2. 解决docker pull 速度慢问题
  3. python多进程编程常用到的方法
  4. HashSet集合和TreeSet集合
  5. summary+plan
  6. 【问链财经-区块链基础知识系列】 第四十课 港版支付宝的区块链跨境汇款与Ripple、Circle大不同
  7. 不允许使用不完整的类型_河南:限速标志不达标,坚决不允许通车!
  8. 计算机网络-基本概念(3)【网络层】-路由选择协议
  9. 【theano-windows】学习笔记一——theano中的变量
  10. git/SmartGit切换用户
  11. 微型计算机主要安装的部件是,微型计算机主板上安装的主要部件
  12. Instagram 使用 Python 的经验
  13. Spring IoC容器初始化过程分析
  14. java总结体会_Java课程总结心得体会
  15. 聊聊索引失效?失效的原因是什么?
  16. 163邮箱的登陆页面是什么样的有几种登陆方式?163邮箱手机版登陆
  17. 智能智慧型停车场管理系统解决方案
  18. 计算机视觉编程 BOF图像检索(Python)
  19. 蔬菜大棚成本_在农村,建一个温室大棚要多少钱?看完一目了然!
  20. python爬虫之Scrapy框架,基本介绍使用以及用框架下载图片案例

热门文章

  1. 2023你冲不冲,冲冲冲冲~~
  2. 知乎页面的html代码,Web前端
  3. 剑指Offer:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
  4. win2003控制面板不见了,打开“控制面板”的方法,安全策略
  5. 洛谷P2178 [NOI2015]品酒大会 后缀数组+单调栈
  6. python提取pdf文字,python 提取pdf文字
  7. 图标.svg html怎么换颜色,如何改变SVG图像的颜色使用CSS(jQuery SVG图像替换)?
  8. VS 2010 测试功能学习(七) - RnP与Coded UI自动化测试
  9. Java做彩虹进度条,Android自定义控件-彩虹条进度条
  10. java计算机毕业设计无线通信基站监控及管理系统源码+系统+数据库+lw文档+mybatis+运行部署