Ubuntu20.04下 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)
Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建
目录导航
- Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建
- 前言
- 1.安装前的准备工作
- 2.安装交叉编译器
- 3.安装tslib
- 4.安装 QtCreator
- 5.编译 Qt 库源码
- 5.1 准备工作
- 5.2 编译 PC 版
- 5.3 编译 ARM 版
- 6.配置Qt
- 7.你们要的壁纸
前言
这篇文章,一开始是基于 Ubuntu19.10版本而写,但现在19.10版本的Ubuntu已经停止了源的更新,也就是说,Ubuntu19.10已经废了,故我重新在20.04.02版本上重新尝试了一遍,并对本博文进行了一些修改。
写此文的初衷,是为了自己使用,因为最近正在以Tiny6410板子做实训,所以也是初学者一枚,只能保证我遇上的问题统统能够解决掉,至于一些没遇上的,欢迎各位看客给我留言,大家一起讨论,一起解决。
注:本文会持续更新
1.安装前的准备工作
环境要求
- Linux系统:Ubuntu 19.10(其实低版本也可以成功,只是可能会有一些我没遇到过的问题,不过16.04、18.04我都装成功过)
- gcc、g++版本:4.8.5(可以选择更低)
- 交叉编译器:arm-linux-gcc-4.5.1(后面会讲到)
友情链接
- Ubuntu 19.10 降级安装gcc4.8、g++4.8
- 安装环境所需的安装包(友情提供,零积分)
为了方便截图,本教程选择在虚拟机上演示
查看Linux版本号指令
sudo lsb_release -a
2.安装交叉编译器
注意:全程最好使用sudo格式操作,不要进入root权限,以免造成普通用户与root用户权限冲突而引发的错误
- 将我分享的安装包解压缩到Linux系统中,比如我就放在了 /home/[用户名]/Share 文件夹目录下
- 进入安装包所在的文件夹,将arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz压缩包复制到tmp文件夹下
sudo cp arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz /tmp
3.到/tmp目录下将此压缩包解压缩,注意命令格式
解压缩命令中,最后的C是大写,最后的\
不能丢,-C
与\
之间的空格不能丢
cd /tmp/
sudo tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz -C /
解压后如图:
4.配置 .bashrc
这个文件在用户目录下,可以直接cd过去,并用ls -a查看
注:
.bashrc
文件在每个用户目录下都有,它的功能就类似于Windows系统中的环境配置,都是配置目录路径的。同样,Linux的root权限用户也有这个文件,但每次我用root权限配置后,总是会有各种各样的问题,初学者的我猜测是root用户和普通用户的权限关系是交集,而不是全集子集的关系,所以会有冲突的地方,所以尝试再三后,我决定都用普通用户完成环境的搭建操作。
使用vim或者gedit都可以打开该文件
sudo gedit .bashrc
或者
sudo vim .bashrc
打开后在文件的最下方,添加如下代码
export PATH=/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH
如图:
保存并配置(这一句不需要sudo)
source .bashrc
5.检查arm-linux-gcc是否安装成功
arm-linux-gcc -v
成功则显示如下信息:
如果出现以下错误:
可以查看这个网址:
opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc无法找到
上述网页转载:这里推荐第四到第一的方式尝试,一般都是缺少第四个才不成功的
新人第一篇,开头先扯点废话。都说嵌入式linux入门门槛很高, 亲身体会了一下,还真的是挺高的…从学校的学生实验室拿了块tiny4412,看了几篇csdn的入门文章按部就班做,前面搭建环境和安装交叉编译器安装就卡住了十几天,甚至还搞到虚拟机卡死,关机再开直接开机不成功……多种方法尝试无效后只好重装Ubuntu了,结果里面很多代码、记录都没了QAQ,这可能就是所谓的还没开始编程就已经开始脱发了吧~~~
言归正传,安装了tiny4412光盘自带的交叉编译器后,终端输入arm-linux-gcc -v后提示没有找到(直接在它的目录下打开也不行),然后百度查了几篇文章,有以下几种说法(我用的是虚拟机环境下的Ubuntu 18.04):
1、环境变量设置错误
vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/FriendlyARM/toolschain/4.5.1/bin"
2、缺少32位的运行库 ia32-libs ,安装命令如下:
apt-get install ia32-libs
3、缺少lsb-core运行库,安装命令如下:
sudo apt-get install lsb-core
4、安装g++-multilib
sudo apt-get install g++-multilib直到执行到四种方法都试了才成功~~
————————————————
版权声明:本文为CSDN博主「floatinglong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/floatinglong/article/details/82704390
3.安装tslib
写在前面:编译与安装时常出错,且会留下痕迹。如果错误修改了依旧不能编译安装成功,推荐将整个文件夹统统删除,重新解压缩,重新操作
准备工作:添加32位运行库
sudo apt-get install lib32ncurses5 lib32z1
1.回到压缩包所在文件夹,解压缩tslib
tar xzf tslib-1.4.tar.gz
2.进入解压缩出的文件夹tslib,并运行./autogen.sh
接下来的操作,请根据我给出的指令来,不要随便加sudo,以免出错
cd tslib/
运行./autigen.sh
//设定C编译器
export CC=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
//设定C++编译器
export CXX=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++
(这两步必须先于 ./autoge.sh 执行,不然使用的时默认的编译器即X86_64下的编译器,生成的库文件都是X86下的可执行文件,可以通过”file filename“命令查看filename文件的属性,编译过程不会出错,但是后面移植Qt的时候会到时tslib永远无法加载进去。)
./autogen.sh
可能出现的错误:./autogen.sh: 4: autoreconf: not found
解决办法:
sudo apt-get install autoconf automake libtool
3.配置configure
sudo mkdir tmp //创建安装目录echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache //设置参数./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp //配置到tmp目录下
4.编译并安装
指令:
make
make install
可能出现的错误:
【1】在make时出错,提示
In function ‘open’, inlined from ‘main’ at ts_calibrate.c:229:11: /usr/include/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments make[2]: *** [ts_calibrate.o] Error 1
解决方法:
这是因为open函数的语法不符合最新的gcc,在/tests/ts_calibrate.c
中加入open的第三个参数0777:
//通过搜索在ts_calibrate.c文件中找到下列代码
if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);//此处修改第三个参数为0777
} else {
cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);//此处修改第三个参数为0777
}
【2】执行make时遇到的error:undefined reference to `rpl_malloc’
原文章出处编译安装tslib-1.4.tar.gz
执行make时遇到的error:
root@mylubuntu:/home/mysmbshare/tslib# make
...............
ts_test.o: In function `main':
ts_test.c:(.text+0x4d4): undefined reference to `rpl_malloc'
fbutils.o: In function `open_framebuffer':
fbutils.c:(.text+0x108): undefined reference to `rpl_malloc'
collect2: ld returned 1 exit status
Makefile:452: recipe for target 'ts_test' failed
make[2]: *** [ts_test] Error 1
make[2]: Leaving directory '/home/mysmbshare/tslib/tests'
Makefile:481: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/mysmbshare/tslib'
Makefile:392: recipe for target 'all' failed
make: *** [all] Error 2
解决方法:
编辑tslib文件夹下的config.h.in 将文件中的以下两行注释掉
//#undef HAVE_MALLOC 文件中的47行
//#undef malloc 文件中的189行
再次执行步骤4,就ok了。
【3】在make install时出现下面的错误提示
Making install in etc
make[1]: Entering directory ‘/home/yyz/Downloads/tslib/etc’
make[2]: Entering directory ‘/home/yyz/Downloads/tslib/etc’
/usr/bin/mkdir -p ‘/home/yyz/Downloads/tslib/tmp/etc’
/usr/bin/mkdir: cannot create directory ‘/home/yyz/Downloads/tslib/tmp/etc’: Permission denied
(此处标红的内容为错误内容,也是重点)
make[2]: *** [Makefile:343: install-sysconfDATA] Error 1
make[2]: Leaving directory ‘/home/yyz/Downloads/tslib/etc’
make[1]: *** [Makefile:415: install-am] Error 2
make[1]: Leaving directory ‘/home/yyz/Downloads/tslib/etc’
make: *** [Makefile:481: install-recursive] Error 1
这说的是权限不足,不能完成相应操作
此时,就只能使用sudo make install
了
5.检查tslib编译是否成功
在tslib文件夹下执行以下指令
cd tmp/bin
file ts_test
若得到以下结果,则说明编译成功了
ts_test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.27, with debug_info, not stripped
如果使用file命令显示tslib/bin下的程序格式竟然是X86,则需要重新编译安装(建议把整个tslib文件夹删除干净,重新解压),此时应注意gcc、g++、arm-linux-gcc、arm-linux-g++的版本是否正确
6.将tmp/
内的所有东西都拷贝到/usr/local/tslib
文件夹下
指令:
sudo mkdir /usr/local/tslib
cd ..
//这一步跟着上面的步骤来的,目的是返回倒tmp文件夹
//如果不是在tmp/bin文件夹下,则自行输入其他指令进入tslib/tmp目录下
sudo cp -rfd * /usr/local/tslib // 强制拷贝tmp/下所有文件到/usr/local/tslib下// -d:保持链接,原来的是链接,复制过来的还是链接
4.安装 QtCreator
回到安装包所在文件夹,执行如下指令
sudo chmod 777 qt-creator-linux-x86_64-opensource-2.5.2.bin
sudo ./qt-creator-linux-x86_64-opensource-2.5.2.bin
输入第二条命令并回车后,会出现如下内容
5.编译 Qt 库源码
5.1 准备工作
1.在/usr/local/文件夹目录下,创建两个新文件夹:qt-pc qt-arm
sudo mkdir /usr/local/qt-pc /usr/local/qt-arm
2.将源码 qt-everywhere-opensource-src-4.8.5.tar.gz 进行解压,并分别复制里面的内容到qt-pc,qt-arm文件夹下。
sudo tar zxvf qt-everywhere-opensource-src-4.8.5.tar.gz
cd qt-everywhere-opensource-src-4.8.5/
sudo cp * /usr/local/qt-pc/ -rf
sudo cp * /usr/local/qt-arm/ -rf
5.2 编译 PC 版
进入qt-pc文件夹
依次configure、make、make install
注:
如果计算机或虚拟机分配的处理器是多核的,可以使用make -j n
指令来加快速度,其中,指令里的n
就是要使用处理器核的数量
例如:make -j 4
make install -j 4
就是使用四个核来编译并安装
指令如下:
cd /usr/local/qt-pc
sudo ./configure
sudo make
sudo make install
当出现下面的内容时,说明该项目已经配置成功了,可以编译并安装了。
编译过程中可能会出现的问题:
./configure出错:Basic XLibfunctionality test failed!
这个错误主要是因为,XLib 库没有安装,所以在编译 X11 平台时,应该保证以下命令正确执行
sudo apt-get install libx11-dev libxext-dev libxtst-dev
注意:
可以使用 make confclean 命令把以前的配置信息清除掉,然后再重新配置。
5.3 编译 ARM 版
进入/usr/local/qt-arm/文件夹中
cd /usr/local/qt-arm/
首先进行configure配置,和pc版本的不同,arm版本的configure配置要相对复杂一些
- 对qmake.conf文件进行配置
sudo gedit /usr/local/qt-arm/mkspecs/qws/linux-arm-g++/qmake.conf
或者
sudo vim /usr/local/qt-arm/mkspecs/qws/linux-arm-g++/qmake.conf
修改后的文本内容
#对文件中内容覆盖
# modifications to g++.conf
QMAKE_CC = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc -lts
QMAKE_CXX = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++ -lts
QMAKE_LINK = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++ -lts
QMAKE_LINK_SHLIB = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++ -lts
# modifications to linux.conf
QMAKE_AR = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-ar cqs
QMAKE_OBJCOPY = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-objcopy
QMAKE_STRIP = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-strip
- 复制下面的指令,对configure进行配置
sudo ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.5-arm -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24 -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-qvfb -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-pch -no-separate-debug-info -nomake examples -nomake tools -nomake docs -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
3.编译并安装
sudo make
sudo make install
4.可能出现的问题
在第二步的configure
中,可能会在最后报如下这个错误
The tslib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR and QMAKE_LIBDIR in
/usr/local/qt-arm/mkspecs/qws/linux-arm-g++.
编译QtE的时候可能在configure的最后会出现这个问题,下面提供几种解决思路。
arm-linux-gcc无法定位
由于编译过程需要交叉编译器的支持,因此首先检查arm-linux-gcc的环境变量是否正确配置,在终端输入arm-linux-gcc ,按两次tab,看是否会出现相关选项,否则需要设置环境变量。(详情参考该文章的第2节)arm-linux-gcc版本问题
必须确保编译tslib所使用的交叉编译器和编译QtE的交叉编译器的版本相同,不能中途更换版本。(这个没啥多说,按照上文一步一步安装吧)tslib未被正确编译
这个问题比较隐蔽,进入/usr/local/tslib/bin目录下(也就是之前tslib的安装路劲)
执行下面的指令
file ts_test
如果tslib是RAM版本,则显示以下内容
ts_test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.27, with debug_info, not stripped
如果使用file命令显示tslib/bin下的程序格式竟然是X86,则需要重新编译安装(建议把整个tslib文件夹删除干净,重新解压),此时应注意gcc、g++、arm-linux-gcc、arm-linux-g++的版本是否正确
6.配置Qt
打开Qt Creater
通过
工具-->选项-->构建和运行-->Qt 版本菜单
,手动设置选择 qmake 路径。
如果linux选择的是英文版,则为
Tools-->Options-->Bulid & Run-->Qt Versions
为了方便,接下来都以英文界面操作(因为我装的英文版linux,大家多多担带)
点击add,添加相应目录下的qmake
注意
一共有两个qmake要添加,分别对应Pc版Qt和ARM版Qt
然后,添加GCC
Add-->GCC
至此,Ubuntu 下Tiny6410 嵌入式 Qt 开发环境的搭建工作,全部完成!
7.你们要的壁纸
Ubuntu20.04下 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)相关推荐
- Ubuntu下嵌入式Qt开发环境配置全攻略
本文以友善之臂的Mini6410嵌入式开发板为目标板,介绍ubuntu 12.04系统下,配置嵌入式Qt开发工具的过程.本文中介绍的工具.大部分步骤和脚本来自开发板附带资料光盘,但其默认配置环境为老旧 ...
- 嵌入式Qt开发环境搭建
嵌入式Qt开发环境搭建 系统基础环境 系统更新 sudo apt update sudo apt upgrade sudo apt autoremove 安装常用软件 # 安装vim sudo apt ...
- 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置
目录 沁恒CH32V003(一): CH32V003F4P6开发板上手报告和Win10环境配置 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置 硬件准备 沁 ...
- Ubuntu 16.04下配置openWRT开发环境
Ubuntu 16.04下配置openWRT开发环境 1.配置openwrt开发环境,本实验室在ubuntu16.04系统下测试 在编译之前我们先要搭建环境,ubuntu下OpenWrt编译环境需要安 ...
- linux 嵌入式 交叉 环境搭建 实验原理,实验三 嵌入式Linux开发环境的搭建
南京邮电大学通达学院 实 验 报 告 实验 实验三题目 嵌入式Linux开发环境的搭建 课程名称 嵌入式驱动开发实验 学院 专业 班 实验者学号同做者学号 08002210 姓名 毛骏超 同做者学号 ...
- GCC编译器简明教程(Linux下C语言开发环境的搭建)
GCC编译器简明教程(Linux下C语言开发环境的搭建) 市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境(例如GNOME.KDE.Unity等)和各种常用的必 ...
- Win7下 OpenCV+Qt开发环境搭建
1.所需软件工具: (1)OpenCV开发库,2.4.9版:包括源文件(source文件夹)和编译后的文件(build文件夹),但最好自己使用CMake又一次编译.否则easy出错. (2)Qt Cr ...
- Ubuntu20.04下配置深度学习环境
文章目录 一.安装Anaconda 1.安装Anaconda 2.区分ubuntu系统中自带的python与Anaconda中带的python 3.创建一个深度学习环境 二.安装cuda与cudnn ...
- 【Qt】ubuntu下Qt开发环境的搭建
下载对应版本的Qt开发环境 Qt官网下载地址:https://download.qt.io 国内镜像下载地址:https://mirrors.cloud.tencent.com/qt/ .建议用镜像下 ...
最新文章
- 本科-人工智能模拟卷
- 简单好用的中文分词工具之HanLP的安装与使用
- LeetCode 49字母异位词分组50pow(x,n)51八皇后
- Android系统语言默认设置为简体中文
- jQuery二维数组遍历
- springboot的redis工具类编写(采用RedisTemplate)(简单的取值,取多个值)。
- LeetCode 1780. 判断一个数字是否可以表示成三的幂的和(位运算)
- 循环小数是分数集合吗_人教版小学数学三年级上册 分数的简单计算 教案、课件,公开课视频...
- 【测试】模拟一个全表扫描的sql,对其进行优化走索引,并且将执行计划稳定到baseLine。...
- python清洗完数据做什么_python数据清洗的基本思路是什么?
- ios应用提交审核出现的问题总结
- 软件测试基础—易用性测试
- steam游戏直连工具
- Matab六自由度机械臂建模的偷懒方法
- 使用depot_tools下载chromium源码
- 牛学长iTunes备份密码移除工具
- 微计算机应用是核心吗,北大核心哪个杂志好投
- 关于SysinternalsSuite全部工具详解
- (转)MAPISendMail调用系统默认的邮件客户端发邮件
- GSM Arena 魅族mx四核评测-个人翻译