QT嵌入式linux-arm移植

一、环境准备

编译环境:Ubuntu 20 . 04 (下载地址:https://ubuntu.com/download/desktop)
QT源码(QT5.9.5 下载地址:https://download.qt.io/archive/qt/5.9/5.9.5/)
交叉编译器(arm-2014.05 下载地址:https://download.csdn.net/download/qq_42898725/19428034?spm=1001.2014.3001.5503)

二、编译准备

1.解压qt源码
2.配置交叉编译器的路径  
$ vim /etc/profile

#文件最后一行加入

export PATH=/opt/arm-2014.05/bin:$PATH

使生效

source profile

判断是否生效:

arm-none-linux-gnueabi-gcc -v   #能显示出交叉编译器的版本号则成功

三、QT源码交叉编译

1.指定目标平台的架构和交叉编译器的类型

(QT5有相应的配置文件,只需要修改qmake.conf)

vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf     #在源码路径下

下面是修改好的qmake.conf, 其中的内容需要根据自己的实际情况去修改。

#
# qmake configuration for building with arm-linux-gnueabi-g++
#


MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib


#define the architecture of arm /定义arm的架构
QT_QPA_PLATFORM = linuxfb:fb=/dev/fb0
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
#end


include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)


# modifications to g++.conf
QMAKE_CC                = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-gcc
QMAKE_CXX               = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK              = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-g++


# modifications to linux.conf
QMAKE_AR                = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-objcopy
QMAKE_NM                = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-nm -P
QMAKE_STRIP             = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-strip

load(qt_config)

这里修改了两个地方,一是定义了arm的架构,其中:QT_QPA_PLATFORM是指定QPA平台的插件,这里选择的是linuxfb,
参数-O是编译器提供的优化选项,如-O、-O1、-O2、-O3等,代表不同的优化级别,
参数-march后面指定的是目标处理器的架构(可能指定不同的架构会调用不同的指令集,猜的~)
另外一个改动的地方就是将下面g++.conf和linux.conf中的参数值中加上了完整的路径,如arm-none-linux-gnueabi-gcc,这是我选择的交叉编译器,可以根据自身的情况修改。

2. 根据需求配置Qt

配置Qt可以通过源码包中configure脚本来完成,运行configure脚本后会得到makefile文件,然后通过make和make install命令完成编译和安装。这里编写了一个脚本来实现配置的步骤。

vim icedustpan.sh   #创建编译脚本

脚本说明:
-prefix /opt/newQt5.9.5_arm/newQt5.9.5_arm_install \ 是安装路径 详细说明(https://www.bilibili.com/video/BV1tp4y1i7EJ?p=17)的p17有介绍

./configure \
    -v\
    -prefix /opt/newQt5.9.5_arm/newQt5.9.5_arm_install \
    -release \
    -make libs\
    -xplatform linux-arm-gnueabi-g++ \
    -optimized-qmake \
    -pch \
    -qt-zlib \
    -no-opengl \
    -no-sse2 \
    -no-openssl \
    -no-cups \
    -no-separate-debug-info \
    -nomake examples -nomake tools

给与权限:

chmod +x icedustpan.sh

执行配置QT脚本

./icedustpan.sh

3. 编译Qt

make -j4
sudo make install

4.移植到ARM

将自己编译安装的QT的lib和plugins 拷贝到开发版中
配置arm的环境变量

vi etc/profile
export LD_LIBRARY_PATH=/usr/local/qt5.9.6/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/qt5.9.6/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=/usr/local/qt5.9.6/lib/fonts

5.安装Qt Creator

下载路径:https://download.qt.io/archive/qt/

6.配置Qt Creator

配置步骤
点击工具->选项:
QT嵌入式linux-arm移植_第1张图片

点击构建运行 然后点击编译器:
QT嵌入式linux-arm移植_第2张图片

点击Add->GCC->C:
QT嵌入式linux-arm移植_第3张图片

编译器路径填写:
/opt/arm-2014.05/bin/arm-none-linux-gnueabi-gcc
然后点击Apply:

C++也是一样
点击Add->GCC->C++:
QT嵌入式linux-arm移植_第4张图片
编译器路径 填写:
/opt/arm-2014.05/bin/arm-none-linux-gnueabi-g++
然后点击Apply:

点击Qt Versions ,然后点击Add:
选择如下图路径的qmake,然后点击Apply:
QT嵌入式linux-arm移植_第5张图片

点击Debuggers,然后点击Add:

Name填写:qt5.9.5-imx6
Path 填写:
/home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-gdb
然后点击Apply
QT嵌入式linux-arm移植_第6张图片

点击Kits,然后点击Add:
QT嵌入式linux-arm移植_第7张图片

Name填写:qt5.9.5-imx6
Sysroot填写:/home/ubuntu1404/work/arm-2014.05/bin
Compiler C 选择GCC
Compiler C++ 选择GCC
Debuggers 选择qt5.9.5-imx6
Qt version 选择Qt 5.9.5(qt5)
最后点击OK。

7.启动Qt Creator

使用root用户在终端运行:<安装目录>/bin/qtcreator.sh
直接点图标运行可能无法编译,提示一些库找不到

你可能感兴趣的:(嵌入式,linux,qt,arm)