Ubuntun平台QT-RK3399交叉编译

=====================【事先准备】=======================
①安装python3

sudo apt-get install python3

复制一份python3 命名为python (编译qtQml用)
    -- 打印python3路径--

which python3

    --复制并重命名为python

sudo cp -r /usr/bin/python3 /usr/bin/python

安装依赖库

sudo apt-get install bison build-essential gperf flex ruby python libasound2-dev libbz2-dev libcap-dev 

    【安装flex词法分析器和bison语法分析器】

sudo apt-get install flex

sudo apt-get install bison

    【安装gperf哈希函数生成器】

sudo apt-get install gperf

    【安装libxcb*,[参考]】

sudo apt-get install libxcb*

    【安装OpenGL】

sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libegl1-mesa-dev
sudo apt-get install freeglut3-dev


==================【安装交叉编译工具】====================
(1)安装交叉编译工具
    --解压--

tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

    --添加环境变量--

sudo gedit /etc/profile

    --最后一行加上--

export PATH="/home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH"

    --刷新--

source  /etc/profile

    --查看版本--

aarch64-linux-gnu-gcc -v


====================【源码配置】======================

(2)交叉编译qt库
    --解压--

tar -xvf qt-everywhere-src-5.12.9.tar.xz

    --修改信息 qmake.conf --

cd qt-everywhere-src-5.12.9/qtbase/mkspecs/linux-aarch64-gnu-g++/
ls
gedit qmake.conf

    --添加平台架构,以下内容添加至qmake.conf 文件内sublib段落后--

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts

    --最好在加上交叉编译链的绝对路径,不然源码编译过程中容易出现报错--
    --例如/home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/

# modifications to g++.conf
QMAKE_CC = /home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc

QMAKE_CXX = /home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

QMAKE_LINK              = /home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

QMAKE_LINK_SHLIB        = /home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

# modifications to linux.conf
QMAKE_AR                = /home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ar cqs

QMAKE_OBJCOPY          = /home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objcopy

QMAKE_NM                = /home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm -P

QMAKE_STRIP            = /home/jayuco/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-strip

load(qt_config)

====================【源码编译】======================

(3)方法一:直接运行法【建议不要放在源码目录调用configure,否则会污染源码】
    --创建文件夹,存放编译过程文件--

cd /home/jayuco/
mkdir qt-5.12.9-build
cd /home/jayuco/qt-5.12.9-build/

    --执行configure  --
(在qt-5.12.9-build文件夹中,运行qt源码里的configure文件,并指定编译后Qt库文件安装路径,及其他参数。-prefix 指定qt安装路径,即qmake安装路径)

./../qt-eve rywhere-src-5.12.9/configure -prefix /home/jayuco/qmakeFile/qt5.12.9-armv8 \ -no xcb

    --在弹出的终端窗口选择 o (开源版), y (同意协议)--

    --编译源码(make指令任选其一。-j4表示:4块处理器同时编译)

make
make -j4
make -j8
make -j16

    --安装qt库

sudo make install


(3)方法二:脚本编译法
    --创建编译脚本

cd /home/jayuco/
mkdir qt-5.12.9-build
cd /home/jayuco/qt-5.12.9-build/
gedit auto.sh

    --脚本文件内添加以下内容(参数根据需求修改)--

#!/bin/sh
./configure \
-prefix /home/jayuco/qmakeFile/qt5.12.9-armv8 \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-separate-debug-info \

    --执行脚本--

chmod u+x auto.sh
./auto.sh

 --编译源码(make指令任选其一。-j16表示:16块处理器同时编译)

make
make -j4
make -j8
make -j16

    --安装qt库

sudo make install


以上操作,若无报错,则可在 -prefix 对应的安装目录中找到对应qt库文件。
将qmake添加至Qt Version中,
在kit中添加套件,设置好对应的交叉编译器、Qt Version,即可实现交叉编译。


理论上对python修改别名后,就不用复制拷贝一份python。
① 安装python3:

sudo apt-get install python3

② 添加python3别名:
方法一(每次打开新终端时都会执行,打开bash,添加别名语句并退出,刷新bash文件):

vim ~/.bashrc

alias python='python3'

source ~/.bashrc

        方法二(临时效果,重启后失效):

alias python='python3'

你可能感兴趣的:(Ubuntun平台QT-RK3399交叉编译)