这篇文章,主要是基于 Ubuntu19.10版本而写,写此文的初衷,是为了自己使用,因为最近正在以Tiny6410板子做实训,所以也是初学者一枚,只能保证我遇上的问题统统能够解决掉,至于一些没遇上的,欢迎各位看客给我留言,大家一起讨论,一起解决。
注:本文会持续更新
环境要求
- 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
注意:全程最好使用sudo格式操作,不要进入root权限,以免造成普通用户与root用户权限冲突而引发的错误
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
写在前面:编译与安装时常出错,且会留下痕迹。如果错误修改了依旧不能编译安装成功,推荐将整个文件夹统统删除,重新解压缩,重新操作
1.回到压缩包所在文件夹,解压缩tslib
tar xzf tslib-1.4.tar.gz
2.进入解压缩出的文件夹tslib,并运行./autogen.sh
cd tslib/
sudo ./autogen.sh
可能出现的错误:./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目录下
sudo make
sudo make install
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
}
5.将tmp/
内的所有东西都拷贝到/usr/local/tslib
文件夹下
指令:
sudo mkdir /usr/local/tslib
cd tmp/
sudo cp -rfd * /usr/local/tslib // 强制拷贝tmp/下所有文件到/usr/local/tslib下
// -d:保持链接,原来的是链接,复制过来的还是链接
回到安装包所在文件夹,执行如下指令
sudo chmod 777 qt-creator-linux-x86_64-opensource-2.5.2.bin
sudo ./qt-creator-linux-x86_64-opensource-2.5.2.bin
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
sudo cp * /usr/local/qt-pc/ -rf
sudo cp * /usr/local/qt-arm/ -rf
进入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 命令把以前的配置信息清除掉,然后再重新配置。
进入/usr/local/qt-arm/文件夹中
cd /usr/local/qt-arm/
首先进行configure配置,和pc版本的不同,arm版本的configure配置要相对复杂一些
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
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,则解决办法为:
sudo apt-get install libc:i386
打开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 开发环境的搭建工作,全部完成!