Ubuntu19.10 嵌入式 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版本而写,写此文的初衷,是为了自己使用,因为最近正在以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用户权限冲突而引发的错误

  1. 将我分享的安装包解压缩到Linux系统中,比如我就放在了 /home/[用户名]/Share 文件夹目录下

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第1张图片

  1. 进入安装包所在的文件夹,将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 /

解压后如图:
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第2张图片
4.配置 .bashrc
这个文件在用户目录下,可以直接cd过去,并用ls -a查看
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第3张图片
注: .bashrc文件在每个用户目录下都有,它的功能就类似于Windows系统中的环境配置,都是配置目录路径的。同样,Linux的root权限用户也有这个文件,但每次我用root权限配置后,总是会有各种各样的问题,初学者的我猜测是root用户和普通用户的权限关系是交集,而不是全集子集的关系,所以会有冲突的地方,所以尝试再三后,我决定都用普通用户完成环境的搭建操作。

使用vim或者gedit都可以打开该文件

sudo gedit .bashrc
或者
sudo vim .bashrc

打开后在文件的最下方,添加如下代码
export PATH=/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH
如图:Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第4张图片
保存并配置(这一句不需要sudo)

source .bashrc 

5.检查arm-linux-gcc是否安装成功

arm-linux-gcc -v

成功则显示如下信息:
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第5张图片
如果出现以下错误:
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第6张图片
可以查看这个网址:
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

写在前面:编译与安装时常出错,且会留下痕迹。如果错误修改了依旧不能编译安装成功,推荐将整个文件夹统统删除,重新解压缩,重新操作
1.回到压缩包所在文件夹,解压缩tslib

tar xzf tslib-1.4.tar.gz

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第7张图片
2.进入解压缩出的文件夹tslib,并运行./autogen.sh

cd tslib/

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第8张图片
运行./autigen.sh

sudo ./autogen.sh

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第9张图片
可能出现的错误:./autogen.sh: 4: autoreconf: not found
解决办法:

sudo apt-get install autoconf automake libtool

3.配置configure


sudo mkdir tmp               //创建安装目录
 
sudo echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache            //设置参数
 
sudo ./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp   //配置到tmp目录下

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第10张图片
4.编译并安装
指令:

sudo make
sudo make install

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第11张图片
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第12张图片
可能出现的错误:
在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
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第13张图片
解决方法:
这是因为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
}

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第14张图片
5.将tmp/内的所有东西都拷贝到/usr/local/tslib文件夹下
指令:

sudo mkdir /usr/local/tslib
cd tmp/
sudo cp -rfd * /usr/local/tslib      // 强制拷贝tmp/下所有文件到/usr/local/tslib下
									// -d:保持链接,原来的是链接,复制过来的还是链接

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第15张图片

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

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第16张图片
输入第二条命令并回车后,会出现如下内容
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第17张图片

5.编译 Qt 库源码

5.1 准备工作

1.在/usr/local/文件夹目录下,创建两个新文件夹:qt-pc qt-arm

sudo mkdir /usr/local/qt-pc /usr/local/qt-arm

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第18张图片
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
sudo cp * /usr/local/qt-pc/ -rf
sudo cp * /usr/local/qt-arm/ -rf

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第19张图片

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

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第20张图片

当出现下面的内容时,说明该项目已经配置成功了,可以编译并安装了。
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第21张图片
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第22张图片
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第23张图片
编译过程中可能会出现的问题:

./configure出错:Basic XLibfunctionality test failed!

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第24张图片
这个错误主要是因为,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配置要相对复杂一些

  1. 对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

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第25张图片
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第26张图片
修改后的文本内容

#对文件中内容覆盖
# 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
  1. 复制下面的指令,对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++.

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第27张图片
编译QtE的时候可能在configure的最后会出现这个问题,下面提供几种解决思路。

  1. arm-linux-gcc无法定位
    由于编译过程需要交叉编译器的支持,因此首先检查arm-linux-gcc的环境变量是否正确配置,在终端输入arm-linux-gcc ,按两次tab,看是否会出现相关选项,否则需要设置环境变量。(详情参考该文章的第2节)

  2. arm-linux-gcc版本问题
    必须确保编译tslib所使用的交叉编译器和编译QtE的交叉编译器的版本相同,不能中途更换版本。(这个没啥多说,按照上文一步一步安装吧)

  3. 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

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第28张图片
如果使用file命令显示tslib/bin下的程序格式竟然是X86,则解决办法为:

sudo apt-get install libc:i386

6.配置Qt

打开Qt Creater
通过
工具-->选项-->构建和运行-->Qt 版本菜单,手动设置选择 qmake 路径。
如果linux选择的是英文版,则为
Tools-->Options-->Bulid & Run-->Qt Versions
为了方便,接下来都以英文界面操作(因为我装的英文版linux,大家多多担带)
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第29张图片
点击add,添加相应目录下的qmake
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第30张图片
注意 一共有两个qmake要添加,分别对应Pc版Qt和ARM版QtUbuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第31张图片

然后,添加GCC
Add-->GCC
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第32张图片
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第33张图片
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第34张图片
至此,Ubuntu 下Tiny6410 嵌入式 Qt 开发环境的搭建工作,全部完成!

7.你们要的壁纸

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第35张图片
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第36张图片
Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第37张图片

Ubuntu19.10 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)_第38张图片

你可能感兴趣的:(Linux工具篇,ubuntu,linux,qt4)