一、安装ubuntu版本的qt
下载对应版本的linux qt进行安装,如下图:
二、配置环境变量
对ubuntu系统的系统环境变量PATH、头文件路径C_INCLUDE_PATH、第三方动态库路径LD_LIBRARY_PATH,QT插件库路径QT_PLUGIN_PATH、QML2_IMPORT_PATH进行添加配置,配置如下:
- 进入环境变量编辑状态,命令如下:
vi ~/.bashrc
- 在bashrc文件后面添加内容(具体添加的内容根据交叉编译环境、qt安装的路径进行调整),示例内容如下:
export PATH=$PATH:/home/liu/arm-linux-gnueabihf/bin:/home/liu/lib/bin:/home/liu/qt5.9.8/5.9.8/gcc_64/bin
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/liu/lib/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/liu/lib/lib:/home/liu/qt5.9.8/5.9.8/gcc_64/lib
export QT_PLUGIN_PATH=$QT_PLUGIN_PATH:/home/liu/qt5.9.8/5.9.8/gcc_64/plugins
export QML2_IMPORT_PATH=$QML2_IMPORT_PATH:/home/liu/qt5.9.8/5.9.8/gcc_64/qml
alias sudo='sudo env PATH=$PATH'
- 使添加的内容生效,命令如下:
source ~/.bashrc
三、修改QMAKE默认路径
修改方法如下:
四、交叉编译Qt arm 版本
在编译带openssl库的qt版本时,需要先编译openssl,在交叉编译qt库。
1、编译openssl-1.1.1m
- 执行config指令生成makefile文件,命令如下:
//编译静态库
./config no-asm -static --prefix=/home/cbliu/lib --cross-compile-prefix=arm-linux-gnueabihf-
//编译动态库
./config no-asm shared no-async --prefix=/home/cbliu/lib --cross-compile-prefix=arm-linux-gnueabihf-
- 修改makefile文件,方法如下:
1、去除-m64
CNF_CFLAGS=-pthread -m64
CNF_CXXFLAGS=-std=c++11 -pthread -m64
2、添加编译参数
CFLAG =-fPIC -WALL
- 编译与安装,命令如下:
//编译
make CC=arm-linux-gnueabihf-gcc
//安装
udo make install
2、交叉编译qt arm
2.1 修改linux-arm-gnueabi-g++交叉编译环境
修改路径qtbase\mkspecs\linux-arm-gnueabi-g++\qmake.conf文件,内容如下:
#
# 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++
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-gnueabi-ar cqs
#QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy
#QMAKE_NM = arm-linux-gnueabi-nm -P
#QMAKE_STRIP = arm-linux-gnueabi-strip
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)
2.2 编译与安装
- 编译指令如下
//生成makefile
./configure -release -opensource -prefix /home/cbliu/qt5.9.8/arm -nomake tests -nomake examples -no-opengl -skip qtvirtualkeyboard -make libs -openssl-linked OPENSSL_INCDIR="/home/cbliu/lib/include" OPENSSL_LIBDIR="/home/cbliu/lib/lib" OPENSSL_LIBS="-lssl -ldl -lcrypto" -xplatform linux-arm-gnueabi-g++
//编译
make
- 安装指令如下
make install