准备:
1> QT5.5.1源码包(如果你是其他QT版本请下载其他版本的源码包)
不知道为什么,QT官网的源码包目前没有QT5.5.1
2> 安装交叉编译链
搞清楚开发板支持的交叉编译链
这里我使用的 是aarch64-linux-gnu,安装比较简单
直接在终端输入:
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu
即可安装
安装完成检验编译工具是否可用:aarch64-linux-gnu-g++ -v 注意虚拟机在安装完成后可能需要重启一下
如果返回信息为:
说明安装成功
交叉编译Qt库
.tar.gz格式的解压命令为:
tar -xzvf qt-everywhere-opensource-src-5.5.1.tar.gz
.tar.xz格式的解压命令为:
tar -xvf qt-everywhere-opensource-src-5.5.1.tar.xz
解压完成后会在你保存安装包路径下生成源码包文件夹:
然后编辑qmake.conf文件,这一步比较关键:
由于5.5.1源码包里面没有我们使用的aarch64-linux-gnu文件夹,所以需要改其他的支持的编译工具配置文件,或者是新创建一个(理论上是可以的,但是没有实验)
在 你自己的路径/qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/
有很多配置文件:
找到 文件夹linux-arm-gnueabi-g++/ 进入打开qmake.conf
或者直接
sudo gedit 自己的路径/qt-everywhere-opensource-src-5.9.4/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
文件内容如下:
首先修改文件内容,加入代码:
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts
如果你的编译工具是arm-linux-guneabi-g++/gcc,以下修改步骤可以不进行
修改编译工具为aarch64-linux-gnu-g++(或者你自己使用的编译工具)
修改后的代码为:
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = aarch64-linux-gnu-gcc
QMAKE_CXX = aarch64-linux-gnu-g++
QMAKE_LINK = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB = aarch64-linux-gnu-g++
# modifications to linux.conf
QMAKE_AR = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY = aarch64-linux-gnu-objcopy
QMAKE_NM = aarch64-linux-gnu-nm -P
QMAKE_STRIP = aarch64-linux-gnu-strip
load(qt_config)
保存后,然后在 /qt-everywhere-opensource-src-5.5.1文件夹下创建一个脚本文件,
sudo gedit auto.sh
并添加以下内容:
#!/bin/sh
./configure
-prefix /opt/qt5.5.1-arm
-confirm-license
-opensource
-release
-make libs
-xplatform linux-arm-gnueabi-g++
-pch
-qt-libjpeg
-qt-libpng
-qt-zlib
-no-opengl
-no-sse2
-no-openssl
-no-cups
-no-glib
-no-dbus
-no-separate-debug-info
注意:
-prefix /opt/qt5.5.1-arm 这里是编译后的安装目录,编译完成后会在对应目录上创建qt5.5.1-arm文件夹,此路径和文件名/opt/qt5.5.1-arm可以自定义
-xplatform linux-arm-gnueabi-g++ 为交叉编译相关选择,因为我们在上一步修改了linux-arm-gnueabi-g++的qmake.conf文件,因此要指定为linux-arm-gnueabi-g++,如果你配置的是其他文件夹下的qmake.conf文件,要指定其他的文件夹/
修改该auto.sh文件权限并执行
sudo chmod u+x auto.sh
./auto.sh
执行成功后会显示
之后输入
sudo make
会执行一个比较长的时间,如果你的电脑比较强大,可以使用sudo make -j8
-j后面的数字表示同时执行的线程数,不建议这样,这样报错的信息不好定位
make报错解决:
我在make过程中遇到:
解决方法:
修改/qt-everywhere-opensource-src-5.5.1/qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h
将#define WEBP_USE_NEON 注释掉
完成之后,再输入
sudo make install
make install 报错解决:
有可能你在make的时候没有出问题,在make install的时候出现了关于VP8DspInit函数的报错,其解决方法同上面一样,注释#define WEBP_USE_NEON,之后重新 make install
执行成功后,可以看见auto.sh 中 -prefix 指定的目录下出现了我们指定的安装目录/opt/qt5.5.1-arm,表示安装成功。
交叉编译QT程序
使用命令行完成编译,迅速快捷。
在你QT程序的目录下新建一个build文件夹,并进入。
mkdir build
cd build
在build目录终端下,设置Qmake的环境变量。
export PATH=/opt/qt5.5.1-arm/bin:$PATH
这个qt5.5.1-arm就是刚刚我们make install 生成的编译目录
接着执行
qmake ..
注意,要忘记qmake后面的 ..
之后执行
make
make编译完成后会在build目录下生成一个可执行qt_xt_demo
这就是我们要在开发板运行的可执行文件了
使用Xshell传输数据到开发板
将qt_xt_demo先从虚拟机中移动到windows端,使用Xshell工具利用串口连接到Rk开发板,其波特率一般为115200。
首先打开Xshall,选择新建
如果你要使用串口进行通信,协议选择SERIAL。
选择左侧菜单栏的 串口 选项,之后选择正确的端口号一般是COM3 或者 COM4
连入开发板之后,使用账号和密码进行登录。
在Xshell中,使用sudo rz -e 选择文件进行传输。
将编译的可执行文件传输到开发板指定的文件夹下
给它赋权限:sudo chmod 777 qt_xt_demo
设置桌面快捷方式实现双击打开QT程序
在开发板环境中,你需要执行 sudo qt_xt_demo才能运行程序,显示你的界面,一个完整的产品肯定不能这样执行,我们需要在桌面设置一个类似链接的东西,通过双击他来执行一个脚本,实现程序运行,打开。
首先我们写一个非常简单的脚本,创建文件run.sh,加入内容
#!/bin/bashsudo /myqt/qt_xt_demo #注意:这里的路径需要改成自己的 给这个脚本文件加入权限
chmod u+x run.sh
之后,我再用Xshell上传一个你想要作为图标的图片,不要太大
例如,我上传了一个名为 1.png的图片再开发板里的myqt目录下
之后我们再写一个时间的的桌面配置文件:在开发板桌面目录下,创建文件 mytest.desktop,添加内容为
[Desktop Entry]Type=ApplicationExec=/myqt/run.shName=你想要这个软件的命名 GenericName=你想要这个图标的命名Icon=图标路径Terminal=falseCategories=Development; 同样给这文件赋权限
chmod u+x mytest.desktop
之后,双击桌面图片,就可以打开软件了!
准备:
1> QT5.5.1源码包(如果你是其他QT版本请下载其他版本的源码包)
不知道为什么,QT官网的源码包目前没有QT5.5.1
2> 安装交叉编译链
搞清楚开发板支持的交叉编译链
这里我使用的 是aarch64-linux-gnu,安装比较简单
直接在终端输入:
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu
即可安装
安装完成检验编译工具是否可用:aarch64-linux-gnu-g++ -v 注意虚拟机在安装完成后可能需要重启一下
如果返回信息为:
说明安装成功
交叉编译Qt库
.tar.gz格式的解压命令为:
tar -xzvf qt-everywhere-opensource-src-5.5.1.tar.gz
.tar.xz格式的解压命令为:
tar -xvf qt-everywhere-opensource-src-5.5.1.tar.xz
解压完成后会在你保存安装包路径下生成源码包文件夹:
然后编辑qmake.conf文件,这一步比较关键:
由于5.5.1源码包里面没有我们使用的aarch64-linux-gnu文件夹,所以需要改其他的支持的编译工具配置文件,或者是新创建一个(理论上是可以的,但是没有实验)
在 你自己的路径/qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/
有很多配置文件:
找到 文件夹linux-arm-gnueabi-g++/ 进入打开qmake.conf
或者直接
sudo gedit 自己的路径/qt-everywhere-opensource-src-5.9.4/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
文件内容如下:
首先修改文件内容,加入代码:
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts
如果你的编译工具是arm-linux-guneabi-g++/gcc,以下修改步骤可以不进行
修改编译工具为aarch64-linux-gnu-g++(或者你自己使用的编译工具)
修改后的代码为:
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = aarch64-linux-gnu-gcc
QMAKE_CXX = aarch64-linux-gnu-g++
QMAKE_LINK = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB = aarch64-linux-gnu-g++
# modifications to linux.conf
QMAKE_AR = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY = aarch64-linux-gnu-objcopy
QMAKE_NM = aarch64-linux-gnu-nm -P
QMAKE_STRIP = aarch64-linux-gnu-strip
load(qt_config)
保存后,然后在 /qt-everywhere-opensource-src-5.5.1文件夹下创建一个脚本文件,
sudo gedit auto.sh
并添加以下内容:
#!/bin/sh
./configure
-prefix /opt/qt5.5.1-arm
-confirm-license
-opensource
-release
-make libs
-xplatform linux-arm-gnueabi-g++
-pch
-qt-libjpeg
-qt-libpng
-qt-zlib
-no-opengl
-no-sse2
-no-openssl
-no-cups
-no-glib
-no-dbus
-no-separate-debug-info
注意:
-prefix /opt/qt5.5.1-arm 这里是编译后的安装目录,编译完成后会在对应目录上创建qt5.5.1-arm文件夹,此路径和文件名/opt/qt5.5.1-arm可以自定义
-xplatform linux-arm-gnueabi-g++ 为交叉编译相关选择,因为我们在上一步修改了linux-arm-gnueabi-g++的qmake.conf文件,因此要指定为linux-arm-gnueabi-g++,如果你配置的是其他文件夹下的qmake.conf文件,要指定其他的文件夹/
修改该auto.sh文件权限并执行
sudo chmod u+x auto.sh
./auto.sh
执行成功后会显示
之后输入
sudo make
会执行一个比较长的时间,如果你的电脑比较强大,可以使用sudo make -j8
-j后面的数字表示同时执行的线程数,不建议这样,这样报错的信息不好定位
make报错解决:
我在make过程中遇到:
解决方法:
修改/qt-everywhere-opensource-src-5.5.1/qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h
将#define WEBP_USE_NEON 注释掉
完成之后,再输入
sudo make install
make install 报错解决:
有可能你在make的时候没有出问题,在make install的时候出现了关于VP8DspInit函数的报错,其解决方法同上面一样,注释#define WEBP_USE_NEON,之后重新 make install
执行成功后,可以看见auto.sh 中 -prefix 指定的目录下出现了我们指定的安装目录/opt/qt5.5.1-arm,表示安装成功。
交叉编译QT程序
使用命令行完成编译,迅速快捷。
在你QT程序的目录下新建一个build文件夹,并进入。
mkdir build
cd build
在build目录终端下,设置Qmake的环境变量。
export PATH=/opt/qt5.5.1-arm/bin:$PATH
这个qt5.5.1-arm就是刚刚我们make install 生成的编译目录
接着执行
qmake ..
注意,要忘记qmake后面的 ..
之后执行
make
make编译完成后会在build目录下生成一个可执行qt_xt_demo
这就是我们要在开发板运行的可执行文件了
使用Xshell传输数据到开发板
将qt_xt_demo先从虚拟机中移动到windows端,使用Xshell工具利用串口连接到Rk开发板,其波特率一般为115200。
首先打开Xshall,选择新建
如果你要使用串口进行通信,协议选择SERIAL。
选择左侧菜单栏的 串口 选项,之后选择正确的端口号一般是COM3 或者 COM4
连入开发板之后,使用账号和密码进行登录。
在Xshell中,使用sudo rz -e 选择文件进行传输。
将编译的可执行文件传输到开发板指定的文件夹下
给它赋权限:sudo chmod 777 qt_xt_demo
设置桌面快捷方式实现双击打开QT程序
在开发板环境中,你需要执行 sudo qt_xt_demo才能运行程序,显示你的界面,一个完整的产品肯定不能这样执行,我们需要在桌面设置一个类似链接的东西,通过双击他来执行一个脚本,实现程序运行,打开。
首先我们写一个非常简单的脚本,创建文件run.sh,加入内容
#!/bin/bashsudo /myqt/qt_xt_demo #注意:这里的路径需要改成自己的 给这个脚本文件加入权限
chmod u+x run.sh
之后,我再用Xshell上传一个你想要作为图标的图片,不要太大
例如,我上传了一个名为 1.png的图片再开发板里的myqt目录下
之后我们再写一个时间的的桌面配置文件:在开发板桌面目录下,创建文件 mytest.desktop,添加内容为
[Desktop Entry]Type=ApplicationExec=/myqt/run.shName=你想要这个软件的命名 GenericName=你想要这个图标的命名Icon=图标路径Terminal=falseCategories=Development; 同样给这文件赋权限
chmod u+x mytest.desktop
之后,双击桌面图片,就可以打开软件了!
举报