Ubuntu安装QT5.13.2交叉编译环境以及程序运行
Contents [hide]
一、需要的操作系统以及程序环境
- Ubuntu19.04
- qt-everywhere-src-5.13.2.tar.xz,下载地址:
http://download.qt.io/archive/qt/5.13/5.13.2/single/qt-everywhere-src-5.13.2.tar.xz - build-essential
- libgl1-mesa-dev
- arm-linux-gnueabi-gcc
- python环境
- QT creator,下载地址:http://download.qt.io/archive/qtcreator/4.4/4.4.1/qt-creator-opensource-linux-x86_64-4.4.1.run
- 树莓派系统
二、准备工作。
安装build-essential和libgl1-mesa-dev:
sudo apt-get install build-essential libgl1-mesa-dev
安装编译器(我的默认安装路径在/usr/bin/ 下面,后面要用):arm-linux-gnueabi-gcc:
此编译器针对abi平台,编译出的程序会提示不支持VFP,最好不用
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install g++-arm-linux-gnueabi
安装完之后,会在/usr/bin/ 下面得到两个文件arm-linux-gnueabi-g++和arm-linux-gnueabi-gcc后面会在QT creator中用到
或者安装arm-linux-gnueabihf-gcc:
这个是使用VFP的,树莓派系统要用这个,否则会提示如下错误
$ sudo apt-get install gcc-arm-linux-gnueabihf
$ sudo apt-get install g++-arm-linux-gnueabihf
(armel和armhf两个不同的架构,需要根据移植的平台选择。
或者使用 arm-none-linux-gnueabi-gcc ,qmake.conf需要同步进行更改。)
安装python环境(新的qt版本加入了python的支持):
sudo apt-get install python
sudo apt-get install python-dev
sudo apt-get install python-pip
交叉编译过程开始
第一步:下载qt-everywhere-src-5.13.2.tar.xz
wget https://download.qt.io/archive/qt/5.13/5.13.2/single/qt-everywhere-src-5.13.2.tar.xz
第二步:解压源码压缩包
tar -xvf qt-everywhere-src-5.13.2.tar.xz
第三步:修改编译配置文件
cd qt-everywhere-src-5.13.2/
vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
(注意我的改动,选用arm-linux-gnueabi-gcc的话,基本不需要修改。)
如果使用arm−linux−gnueabihf−gcc,下面的都要修改
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabi-gcc
QMAKE_CXX = arm-linux-gnueabi-g++
QMAKE_LINK = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy
QMAKE_NM = arm-linux-gnueabi-nm -P
QMAKE_STRIP = arm-linux-gnueabi-strip
load(qt_config)
注意:
这里指定了编译arm版qt所使用的编译器,与后期QtCreator项目的编译器是一样的。
如果用的是arm-linux-gnueabihf-gcc,那么每一项都要修改为arm-linux-gnueabihf-*
#
# qmake configuration for building with arm-linux-gnueabihf-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabihf-gcc
QMAKE_CXX = arm-linux-gnueabihf-g++
QMAKE_LINK = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_NM = arm-linux-gnueabihf-nm -P
QMAKE_STRIP = arm-linux-gnueabihf-strip
load(qt_config)
如果你是用的是arm-none-linux-gnueabi-gcc,那么每一项都需要修改为arm-none-linux-gnueabi-*。
这里提前解释一下,第三步中已经指定好了编译器版本,所以第四步不需要指定了。
第四步中的-xplatform linux-arm-gnueabi-g++是对应qmake.conf所在的文件夹,代表了编译的Qt库的移植平台。
第四步:配置编译参数,用./configre -help 可以查看参数介绍
我的配置是:
./configure -release -opensource -confirm-license -xplatform linux-arm-gnueabi-g++ -prefix /usr/local/qt5.13.2 -nomake examples -no-opengl -silent -qpa linuxfb
(如果./configure提示出错,提示could not find qmake spec’ ‘,则要注意,QT的文件目录不能有中文,否则会出如上错误!!!)
注意:
1、-xplatform linux-arm-gnueabi-g++ ,指定了编译Qt库的移植平台;如果用的linux-arm-gnueabihf-g++这里也不需要做任何改变
2、-prefix后面的配置为qt库安装(make install)的位置,这个需要根据你的安装位置自己指定。
第五步:make
如果上面配置没有问题,接下来make:
$make
或者
$make -j2 /*CPU 几个核可以使用“-j几”,核多编的快*/
此处安装比较漫长,可能要半个小时左右,根据电脑情况而定
第六步:安装
$sudo make install
在这里加sudo是因为,安装时会将库文件复制到上面第四步配置的安装目录( /usr/local/qt5.13.2),usr目录是需要root权限的。
设置环境变量
sudo vim /etc/profile
在文件末尾加上
export PATH=$PATH:/usr/local/qt5.13.2/bin
更新环境变量
source /etc/profile
然后就可以通过qmake -v 来查看Qt的版本
这是编译Qt5.13.2的过程。
三、安装QT creator
安装之后运行,点击工具->选项->构建和运行->编译器->添加,将上面讲到的arm-linux-gnueabi-g++和arm-linux-gnueabi-gcc后两个文件路径复制到编译器路径中
在QT Versions 页面中设置qmake的路径:
然后在构建套件面板中将编译器指定位上面设置好的C和C++编译器
之后编译的程序不能在ubuntu中运行,否则会提示错误“启动程序失败,路径或者权限错误?”,需要将可执行文件拷贝到树莓派嵌入式系统中即可运行
本文参考了 CSDN博主「elikang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/elikang/article/details/88613992 ,这篇文章指导安装QT交叉编译环境,可以少走很多弯路