正点原子linux-mini开发版QT开发环境配置
基本信息
名称 | 内容 |
---|---|
Ubuntu版本 | Ubuntu 20.04.1 LTS |
QT版本 | qt-opensource-linux-x64-5.9.9.run |
说明
根据正点原子的qt配置手册自己进行环境配置,并且把关键的内容记录下来,方便学习。
需要安装的软件
普通的软件
ubuntu系统
软件名称 | 安装指令 | 说明 |
---|---|---|
gcc编译器 | sudo apt-get install gcc | |
gcc编译器 | sudo apt-get install build-essential | |
更新软件列表 | sudo apt-get update | |
更新软件 | sudo apt-get upgrade | 是升级已安装的所有软件包,升级之后的版本就是本地索引里的,因此,在执行 upgrade 之前一定要执行 update, 这样安装的才是最新的版本 |
安装 NFS 服务 | sudo apt-get install nfs-kernel-server rpcbind | Linux 驱动开发的时候需要 NFS 启动 |
安装 SSH 服务 | sudo apt-get install openssh-server | Ubuntu 的 SSH 服务以后我们就可以在 Windwos 下使用终端软件登陆到 Ubuntu |
安装OpenGL库 | sudo apt-get install libglu1-mesa-dev | Qt5 以上默认将 OpenGL 加入了工程,但是在本机上并没有 |
安装 OpenGL 相关的东西,所以安装即 OpenGL Library 的其中一个库
安装 minicon 串口工具
安装命令:apt-get install minicon
-
配置命令:
apt-get install minicon -s
需要进入root账号执行配置才能保存
-
使用down箭头选择serial port setup,出现具体各选项的配置:
A — Serial Device : /dev/ttyS0
B — lockfile Location : /var/lock
C — Calling Program :
D — Callout Program:
E — Bps/par/Bits : 9600 8N1
F — Hardware Flow Control : YES
G — Software Flow Control : NO
Change with setting?
将选项A的值设置为/dev/ttyS0 表示是串口1。如果需要修改选项A的值,在Change with setting?选项后输入A则光标转移到A选项后, 可以对A选项的值进行修改。修改完,按回车键返回 -
设置Modem and dialing
使用方向箭头选中modem and dialing 项,则修改modem and dialing 选项中的配置项。
需要修改的是去掉A — initing string ……:,B — Reset string ……:
K — Hang-up string ……三个配置项。 -
选择Save as df1。
选择Save as df1选项将修改后的配置信息进行保存为默认的配置选项。 -
Exit from minicom 。
选择Exit from minicom 选项从配置菜单返回到命令行。 -
重新启动Minicom。
安装 FTP 服务
开发板
安装命令:sudo apt-get install vsftpd
说明:在开发的过程中会频繁的在 Windows 和 Ubuntu 下进行文件传输,比如在 Windwos 下进行代码编写,然后将编写好的代码拿到 Ubuntu 下进行编译。Windows 和 Ubuntu 下的文件互传我们需要使用 FTP 服务,设置方法如下:
sudo vi /etc/vsftpd.conf
设置配置文件
Ubuntu系统
安装命令:sudo apt-get install vsftpd
-
登录FTP服务器
方法一:直接输入ftp加ip地址ftp 192.168.10.xxx
方法二:直接输入ftp,进入ftp服务后输入open加ip地址open 192.168.10.xxx
当连接成功后会让你进行身份验证,在输入密码时屏幕上没有任何显示,不用管,直接输完密码敲回车键即可。 -
查看FTP服务器上的文件
(一般情况下用户都会被限制目录的访问权限,只可在当前目录下进行操作)
dir
:显示服务器目录和文件列表
ls
:显示服务器简易的文件列表
cd
:进入服务器指定的目录
dir
命令可以使用通配符“”和“?”,比如,显示当前目录中所有扩展名为jpg的文件,可使用命令 dir .jpg。
cd
命令中必须带目录名。比如 cd main 表示进入当前目录下的main子目录 -
下载文件
上传和下载文件时应该使用正确的传输类型,FTP的传输类型分为ASCII码方式和二进制方式两种,对.txt、.htm等文件应采用ASCII码方式传输,对.exe或图片、视频、音频等文件应采用二进制方式传输。在默认情况下,FTP为ASCII码传输方式。
type
:查看当前的传输方式
ascii
:设定传输方式为ASCII码方式
binary
:设定传输方式为二进制方式
(以上命令都不带参数)
get
:下载指定文件get filename [newname](filename为下载的FTP服务器上的文件名,newname为保存在本都计算机上时使用的名字,如果不指定newname,文件将以原名保存。
get命令下载的文件将保存在本地计算机的工作目录下。该目录是启动FTP时在盘符C:后显示的目录。如果想修改本地计算机的工作目录,可以使用lcd
命令。比如:lcd d:\
表示将工作目录设定为D盘的根目录。
mget
:下载多个文件mget filename [filename …](mget命令支持通配符“”和“?”,比如:mget .mp3 表示下载FTP服务器当前目录下的所有扩展名为mp3的文件。)
- 上传文件
put
:上传指定文件put filename [newname]
send
:上传指定文件send filename [newname]
(filename为上传的本地文件名,newname为上传至FTP服务器上时使用的名字,如果不指定newname,文件将以原名上传。)
上传文件前,应该根据文件的类型设置传输方式,本机的工作目录也应该设置为上传文件所在的目录。
这里的send和put方法用法都基本相同,但是上传速度send却要比put快很多,有兴趣的人可以去研究下。 - 结束并退出FTP
close
:结束与服务器的FTP会话
quit
:结束与服务器的FTP会话并退出FTP环境 - 其它FTP命令
pwd
:查看FTP服务器上的当前工作目录
rename filename newfilename
:重命名FTP服务器上的文件
deletefilename
:删除FTP服务器上的文件
help[cmd]
:显示FTP命令的帮助信息,cmd是命令名,如果不带参数,则显示所有FTP命令
window系统
Windows 下 FTP 客户端我们使用 FileZilla,这是个免费的 FTP 客户端软件,可以在 FileZilla
官网下载,下载地址: https://www.filezilla.cn/download.
交叉编译工具链
交叉编译器安装
ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译,编译就需要编译器, Ubuntu 自带的 gcc 编译器是针对 X86 架构的!而我们现在要编译的是 ARM 架构的代码,所以我们需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架构代码的 GCC 编译器,这个编译器就叫做交叉编译器,总结一下交叉编译器就是:
1、它肯定是一个 GCC 编译器。
2、这个 GCC 编译器是运行在 X86 架构的 PC 上的。
3、这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可执行文件是在 ARM 芯
片上运行的。
交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。交叉编译器有很多种,我们使用 Linaro 出品的交叉编译器,Linaro 一间非营利性质的开放源代码软件工程公司, Linaro 开发了很多软件,最著名的就是 Linaro GCC 编译工具链(编译器),关于 Linaro 详细的介绍可以到 Linaro 官网查阅。Linaro GCC 编译器下载地址如下:
链接: https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/.
我们所使用的 I.MX6U-ALPHA 开发板一个 Cortex-A7 内核的开发板,因此选择 arm-linux-gnueabihf,点击后面的“Binaries”
- 直接执行脚本安装交叉编译工具,连续敲下两次回车键确认,再输入用户密码即可。本次安装的目录为脚本所指定的默认安装的目录,后面的内核编译环境的交叉编译都是按这个安装目录去操作,所以建议您也是默认安装到/opt/fsl-imx-x11/4.1.15-2.1.0 这个默认目录。
USER# ./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh
- 安装相关库 :
sudo apt-get install lsb-core lib32stdc++6
- 交叉编译器验证:
arm-linux-gnueabihf-gcc -v
Visual Studio Code 插件的安装
我们需要按照的插件有下面几个:
1)、C/C++
,这个肯定是必须的。
2)、C/C++ Snippets
,即 C/C++重用代码块。
3)、C/C++ Advanced Lint
,即 C/C++静态检测 。
4)、Code Runner
即代码运行。
5)、Include AutoComplete
即自动头文件包含。
6)、Rainbow Brackets
,彩虹花括号,有助于阅读代码。
7)、One Dark Pro
,VSCode 的主题。
8)、GBKtoUTF8
,将 GBK 转换为 UTF8。
9)、ARM
,即支持 ARM 汇编语法高亮显示。
10)、Chinese(Simplified)
,即中文环境。
11)、vscode-icons
,VSCode 图标插件,主要是资源管理器下各个文件夹的图标。
12)、compareit
,比较插件,可以用于比较两个文件的差异。
13)、DeviceTree
,设备树语法插件。
14)、TabNine
,一款 AI 自动补全插件.
Ubuntu系统 QT开发环境配置
官方推荐的是:Qt sdk 版本: Qt5.5.1 64bit,我使用的是qt-opensource-linux-x64-5.9.9
下载QT:链接: http://download.qt.io/archive/qt/5.9/5.9.9/.
配置交叉编译器
按如下的步骤添加 GCC 编译器,(这里我啰嗦一下,我们配置的是 GCC 编译器, Windows下配置的编译器名称叫 MinGW (Minimalist GNU on Windows ,实际上是将经典的开源 C/C++语言编译器 GCC 移植到了 Windows 平台下)。在选项中还有更多的编译器名称,这一步也是 Qt 为跨平台做的一步工作。
第一步:
浏览这个路径/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++找到我们第 1 节里安装的交叉编译器 arm-poky-linux-gnueabi-g++。(题外话这里为什么不是 arm-poky-linux-gnueabi-gcc 呢?gcc 是编译 c 语言的,g++可以编译 c 语言还包括 c++,我们 Qt 编程语言就是 c++)。
选择好了后,修改名称,修改为 imx6gcc,再点击应用(Apply)。再到 3.3 小节配置 qmake。
第二步:配置 qmake
点击 Qt Versions 这一项,可以 Qt Creator 有一个 qmake,这个 qmake 是安装 Qt Creator 时候自带的(qmake 的作用是生成用于编译的 Makefile 文件)。和配置交叉编译器一样,我们需要配置我们 IMX6 开发板所使用的 qmake。点击右上角的添加,如下图 3.3. 1
我们 IMX6 开发板所用的 qmake 在交叉编译工具的安装路径/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake 下。
为了好区分,在版本名称处把 Qt %{Qt:Version} (qt5)改为 Qt %{Qt:Version} (imx6),点击应
用后(Apply)后,就完成了 qmake 的配置。
备注:在这里可以看到我们交叉编译工具链里的 Qt 版本是 Qt5.6.2,这个与 Qt5.5.1 版本的Qt Creator 没有太大关系(这里要啰嗦一下,为什么我们不用 Qt5.6.2 的 Qt Creator 呢?官方自从 Qt5.6 以后就没有 QWebKit(用于网络编程的模块),对于一些想用 QWebKit 编程而又不想升级 Qt 版本库的读者,所以我们就在交叉编译工具链里的 Qt5.6.2 版本额外添加了 QWebKit模块,同时我们 I.MX6 文件系统也添加了 QWebKit 相关的库)。我们只需要使用交叉编译器里的 Qt5.6.2 版本的来编译我们 I.MX6 开发板上跑的 Qt 应用程序,现在,我们可以把 Qt Creator看作一个具有界面的程序编辑器。
第三步:配置 gdb 调试器
找到我们交叉编译工具链安装路径/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/下的 arm-poky-linux-gnueabi-gdb。选择后点击打开。
第四步:配置 Kits
按如下的步骤配置 Kits,点击 OK 确认即可。构建套件处》名称处 imx6 没有红色的叹号说明配置成功!如果你的环境 CMake Tool:处不可以为空,
这里说明一下为什么要在 Qt mkspec 填上 linux-oe-g++。实质这里指定了…/mkspesc/linux-oe-g++下的 qmake.conf 文件(用于执行 qmake 时生成 Makefile)。
先使能我们第 1 节里搭建的交叉编译工具链,作用是把交叉编译工具的环境导出到我们终端的环境里。
#Ubuntu source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
用 env 指令查看使能工具链后的环境变量,查看我们用了哪个 mkspecs。如下图
#Ubuntu env
第五步:配置环境变量
要想正确使用安装的编译工具链,还需要向 Qt Creator 加入环境变量。
在 Qt creator 的启动脚本里使能环境变量,在/opt/Qt5.5.1/Tools/QtCreator/bin/qtcreator.sh 的第一
行插入使能交叉编译工具链的指令
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
(注意这里不能在#!/bin/sh 以下行插入)。
Ubuntu# sudo vi /opt/Qt5.5.1/Tools/QtCreator/bin/qtcreator.sh
按:wq 保存退出后,先关闭当前的 Qt Creator。再在终端使用指令启动 Qt Creator。注意要想这个环境变量生效,必需通过脚本来启动 Qt Creator,这里很重要啊!没使能环境变量去使用imx6 kits 会出现“make c”之类的错误
Ubuntu# /opt/Qt5.5.1/Tools/QtCreator/bin/qtcreator.sh &
(&的作用为在后台运行)
上述配置环境变量是官方给的方式,这个配置方式需要通过启动qtcreator.sh
这个脚本文件来启动qt软件的,因此不太方便,查看/opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
文件的内容,可以看出全部是配置环境变量的。因此拷贝这个文件的内容到 /etc/profile
文件内,(拷贝的内容要放在最前面)后,可以重启ubuntu系统后,直接启动qt软件而不用通过脚本启动。
总结
上述是我按照官方配置教程进行配置的记录,以后还会根据新的知识点进行添加本文的内容。